Conference call notes 20201111 - easybuilders/easybuild GitHub Wiki

(back to Conference calls)

Notes on the 160th EasyBuild conference call, Wednesday November 11th 2020 (16:00 UTC - 17:00 CET)

Attendees

Alphabetical list of attendees (10):

  • Alex Domingo (VUB, Belgium)
  • Kenneth Hoste (HPC-UGent, Belgium)
  • Adam Huffman (Big Data Institute, Oxford, UK)
  • Denis Kristak (INUITS)
  • Terje Kvernes (University of Oslo, Norway)
  • Alan O'Cais (Jülich Supercomputing Centre, Germany)
  • Mikael Öhman (Chalmers University of Technology, Sweden)
  • Bart Oldeman (ComputeCanada)
  • Åke Sandgren (Umeå University, Sweden)
  • Jörg Saßmannshausen (NIHR Biomedical Research Centre, UK)

Agenda

  • recent developments
  • updates on 2020b version of common toolchains (foss, intel)
  • Q&A

Recent developments

  • EasyBuild v4.3.1 was released on Oct 29th 2020 \o/
  • recent changes
    • framework
      • bug fixes
        • also inject -rpath options for all entries in $LIBRARY_PATH in RPATH wrappers (PR #3495)
          • fixes TensorFlow when using -rpath
          • can we strip down the RPATH section to only include paths that are really needed => open issue for that
            • that's both relevant for performance & security
        • significantly speed up parsing of easyconfig files by only extracting comments from an easyconfig file when they're actually needed (PR #3498)
        • avoid TypeError being raised by --list-toolchains (PR #3499)
      • enhancements
        • add support for toolchain options like 'extra_cxxflags' to specify extra compiler options (PR #2193)
        • add support for %(module_name)s template value (PR #3497)
      • changes
        • cache result of fetch_files_from_pr function (PR #3484)
          • really only relevant for speedup of test suite
        • exclude test configuration with Lmod 7 and Python 3, except for Python 3.6 (PR #3496)
    • easyblocks
      • bug fixes
        • pass paths to patch one by one to apply_regex_substitutions in GCC easyblock when --sysroot is set (PR #2217)
          • workaround for bug in apply_regex_substitutions (see issue #3493)
        • fix version check in Qt5 easyblock w.r.t. disabling features on old Linux kernel versions (PR #2220)
      • enhancements
        • add -fallow-argument-mismatch option when building CP2K 7.1 or older with GCC 10.x (PR #2223)
        • update TensorFlow easyblock for TensorFlow 2.4 (PR #2225)
    • easyconfigs
      • bug fixes
        • patch for GCC 10.2 to fix broken __has_include macro (PR #11627)
          • required for Libint with foss/2020b
        • fixed checksums issues in R 4.0.0 easyconfig (PR #11600, PR #11616)
        • fix source_urls in Geant4 easyconfigs (PR #11596)
      • enhancements
        • (nothing really significant?)
      • new software
      • software updates
      • changes
  • to merge soon
    • framework (v4.3.2 milestone)
      • bug fixes
        • fix combination of --copy-eb and --from-pr (PRs #3473 + #3482)
        • don't pass username in github_api_get_request when no GitHub token is available (PR #3494)
        • crash in apply_regex_substitutions when passing list of paths to patch (issue #3493)
      • enhancements
        • enhance apply_regex_substitutions to allow specifying action to take in case there are no matches (PR #3440)
        • add support for using customized HTTP headers in download_file (PR #3472)
        • support for specifying easyconfig files via "easystack" file (PR #3479)
    • easyblocks (v4.3.2 milestone)
        • bug fixes*
        • fix two bugs in GROMACS easyblock when using GCC & MKL for FFT and BLAS/LAPACK (PR #2212)
        • correctly determine path to active binutils in TensorFlow easyblock (PR #2218)
        • always define $FCCPP in QuantumESPRESSO easyblock (PR #2221)
        • only configure Python with --enable-optimizations when compiling Python with (recent) GCC compiler PR #2228
      • enhancements
        • enhance OpenBLAS easyblock to make it aware of optarch (PR #1946)
        • improve config checks for Boost.MPI and Boost.Python and fix sanity checks of MT libs (PR #2167)
          • didn't get merged for EasBuild v4.3.1 because it broke the installation of some existing Boost easyconfigs...
          • can't mix --with-libraries=x and --without-libraries=y configuration flags, we have to pick which approach we take there
          • Alex: split up easyblock PR to fix sanity check for non-MPI Boost installations
        • run motorBike tutorial case for recent (community) OpenFOAM versions (PR #2201)
          • needs testing...
        • add support for building Clang with OpenMP offload support (PR #2229)
      • new software
        • custom easyblock for Metagenome-Atlas (PR #2219)
    • easyconfigs (v4.3.2 milestone)
      • bug fixes
        • added missing space in configopts in ParaView 5.8.0 easyconfigs using 2020a toolchain (PR #10989)
          • missing space breaks OSMESA functionality (so it's basically GLX)
          • see also https://github.com/easybuilders/easybuild-easyconfigs/issues/10977 (+ notes for previous conf call)
          • Mikael: we need to build 3 different versions of ParaView (3 different backends)
          • Åke: can we avoid building the ParaView server part (which has big security issues)?
            • no obvious configuration option to disable it
            • Mikael: the pvserver part is useless anyway in an on-screen rendering installation of ParaView
        • use bfd linker for glibc (PR #11331)
        • fix LAMMPS 3Mar2020 easyconfigs using intel toolchain on AMD CPUs by patching out hardcoded -xHost (PR #11577)
      • enhancements
      • new software
      • software updates
        • Julia 1.5.2 (PR #11522)
          • CSCS has done some work on JuliaPackage easyblock
        • PyTorch 1.7 (WIP) (PR #11636)
        • TensorFlow 2.4.0 (WIP) (PR #11637)
        • QIIME2 2020.08 (WIP) (PR #11661)
        • see PRs for 2020b generation of easyconfigs (more below)

2020b update of common toolchains

  • status:

    • toolchain definitions for foss/2020b (PR #11489) and intel/2020b (PR #11337) are merged \o/
      • to be included with next EasyBuild release (v4.3.2)
      • foss/2020b
        • GCC 10.2 + binutils 2.35
        • OpenMPI 4.0.5 (+ UCX 1.9.0, PMIx 3.1.5, libfabric 1.11.0)
        • OpenBLAS 0.3.12
        • FFTW 3.3.8
        • ScaLAPACK 2.1.0
      • intel/2020b
        • (GCC 10.2 + binutils 2.35 as base)
        • Intel compilers 2020 update 4 (latest)
        • Intel MPI 2019 update 9 (latest)
        • Intel MKL 2020 update 4 (latest)
  • testing

    • several "large" scientific apps have been tested:
      • CP2K 7.1 with foss/2020b + intel/2020b
        • blocked by Boost, required for Libint + PLUMED
        • patch for GCCcore/10.2.0 required to fix compilation of Libint with foss/2020b (see PR #11627)
          • known regression in GCC 10.2 (broken __has_include macro), fixed upstream
        • considered using libxc 5.0.0 as dep, but CP2K 7.1 is not compatible with it yet (see https://github.com/cp2k/cp2k/issues/909)
      • OpenFOAM 8 with foss/2020b + intel/2020b
        • blocked by Qt5, required for ParaView (see PR #11555)
          • PyQt5 seems to require Qt5 built with OpenSSL (there's an explicit check for it)
          • strictly requires OpenSSL 1.1...
          • openssl11-devel RPMs are available for CentOS 7
            • no such option for Ubuntu 16.04 (no devel packages for OpenSSL 1.1)
          • other option is to provide OpenSSL as a proper dependency in EB
            • but via a wrapper (similar to Java)
            • and it should only installed when the OS OpenSSL is not recent enough
            • does this cause trouble with stuff that links to Qt5 (which links to our OpenSSL 1.1) + other stuff (which links to OS OpenSSL)
            • build OpenSSL without static libraries
            • make "wrapper" symlink to actual libraries (to ensure stuff built with RPATH also pick up updates)
              • or reinstall in place (no wrapper)
          • or go with Qt5 5.14 for now, and worry about this later...
          • => no clear conclusion yet, discussion to be continued in PR + Slack
      • OSU Microbenchmarks
        • very good performance results with both foss/2020b and intel/2020b on RHEL8 w/ ConnectX-6 (Infiniband HDR-100)
      • R 4.0.3 with foss/2020b
        • works fine once all dependencies are in place
      • WRF 3.9.1.1
    • lessons learned
      • GCC 10.x is stricter than earlier versions
  • also fosscuda/2020b?

  • we're dropping the versionsuffix when using Python 3 as a dep (retain with Python 2)

  • TODO:

Easyconfigs merge sprint

Ideas for next EasyBuild User Meeting

Q&A

  • Should we (only) list direct dependencies?
    • Åke: negative side effect w.r.t. recursive unloading
  • Jörg: how is GROMACS with GPU support built w.r.t. CUDA compute capabilities?
    • it looks like we're not telling it to build for specific targets, unclear what it does by default
      • Åke: now it uses this:
      -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=compute_75
    • we should enhance the GROMACS easyblock to listen to --cuda-compute-capabilities?
    • no performance difference when testing GROMACS on A100 vs RTX6000 with typical waterbox test
      • see PRACE benchmark suite (ADD LINK)