Conference call notes 20220216 - easybuilders/easybuild GitHub Wiki

(back to Conference calls)

Notes on the 191st EasyBuild conference call, Wednesday 16 Feb 2022 (16:00 UTC)

Attendees

Alphabetical list of attendees (16):

  • Sebastian Achilles (JSC, Germany)
  • Erica Bianco (HPCNow!)
  • Simon Branford (Univ. of Birmingham, UK)
  • Alex Domingo (VUB, Belgium)
  • Em Dragowsky (CWRU, US)
  • Jasper Grimm (University of York, UK)
  • Kenneth Hoste (HPC-UGent, Belgium)
  • Adam Huffman (Big Data Institute, Oxford, UK)
  • Kurt Lust (Univ. of Antwerpen - LUMI)
  • Alan O'Cais (CECAM)
  • Mikael Öhman (Chalmers University of Technology, Sweden)
  • Bart Oldeman (ComputeCanada)
  • Jurij Pečar (EMBL, Germany)
  • Jörg Saßmannshausen
  • Åke Sandgren (Umeå University, Sweden)
  • Fotis Georgatos (EPFL, Switzerland)

Agenda

  • overview of recent developments
  • broader testing (different OSs)
  • updates on OpenMPI + CUDA, OpenMPI 5.x (?)
  • Q&A

Recent developments

  • release timeline
    • latest release: EasyBuild v4.5.3 (11 Feb 2022)
    • ETA next release: end of March'22?
  • recent changes
    • framework
      • bug fixes
        • avoid crash in get_os_version on modern SLES-based OSs (PR #3955)
        • switch to using pip3 for installing EasyBuild in container recipes generated by EasyBuild (PR #3945)
      • enhancements
        • add end2end test for 'eb --containerize' (PR #3958)
        • add bash completion for easyconfigs from local dir but not robot search path (PR #3953)
        • warn about potentially missing patches in --new-pr (PR #3759)
      • changes
        • ...
    • easyblocks
      • bug fixes
        • set CUDA target architecture(s) for GROMACS based on cuda_cc_semicolon_sep template value (PR #2655)
        • update Siesta EasyBlock to use serial FFTW (PR #2662)
        • added regex to replace /lib/cpp with cpp in OpenFOAM's wmake rules file (PR #2331)
      • enhancements
        • add support to NAMD easyblock to opt out of building with CUDA support even if CUDA is included as dependency (PR #2666)
      • updates
        • remove vulnerable binaries from sanity check of HDF5, no longer installed by default with HDF5 1.10.8 (PR #2670)
        • update sanity check in CUDA EasyBlock: CUDA 11.6 no longer includes samples (PR #2669)
        • fix support for imkl for numexpr 2.8.0+ in numexpr easyblock (PR #2678 + PR #2679)
      • changes
        • ...
      • new software
        • add custom easyblock for reticulate R package (PR #2668)
    • easyconfigs
    • framework
      • reported bugs / bug fixes
        • stop relying on distutils (will no longer be available in Python 3.12) (issue #3963)
      • enhancements
        • extend framework to enable modules to ship RPATH wrappers (issue #3918)
        • add a "clone_into" field to git_config source specification (PR #3949)
        • drop into shell with full environment in case of failure (issue #3950)
        • allow tweaking of easyconfigs from different toolchains (PR #3669)
        • avoid uploading test reports when no easyconfigs are (re)built (PR #3957)
        • add support for customizing '*' in output of --dry-run for (build) dependencies (PR #3962)
      • changes
        • enable static analysis for python2.7 (PR #3725)
    • easyblocks
      • bug fixes
        • set $NINJAFLAGS to make sure Ninja doesn't use all visible cores when building Qt5 ([PR #2338[(https://github.com/easybuilders/easybuild-easyblocks/pull/2338))
          • so be done more generally in EasyBuild framework instead?
          • perhaps only when Ninja is included as a build dependency?
        • make sure TensorFlow doesn't see the nvptx-none dir when searching for gcc include dir (PR #2682)
        • make OpenSSL aware of host CA certs (issue #2674)
      • enhancements
        • enhance Geant4 easyblock: add support for optional build options (PR #2659)
        • add automatic CUDA support for ELPA (PR #2673)
      • updates
        • update NEURON easyblock to use CMakeMake for recent versions (PR #2304)
        • update IPP easyblock to support versions >= 2021.2 (PR #2672)
        • update Clang-AOMP easyblock to add support for ROCm v5.0 (PR #2681)
        • add fix_shebang to install_step of PythonPackage easyblock so that we can fix shebangs when installing extensions (PR #2680)
      • new software
        • ...
      • changes
        • ...
    • easyconfigs
      • bug fixes
        • R-4.1.2-foss-2021b.eb install failing (issue #15005)
          • includes some suggested changes w.r.t. PROJ + NLopt that we should apply?
      • enhancements
        • ...
      • new software
        • see https://github.com/easybuilders/easybuild-easyconfigs/labels/new
        • MPItrampoline (WIP) (PR #14607)
          • Alan: using MPItrampoline as a toolchain component to replace OpenMPI should be relatively
          • actually allowing switching to a different MPI library is a bit more complex, definitely needs a custom easyblock to install MPItrampoline wrapper libraries
          • Mikael: building software that queries for CUDA support in OpenMPI on top of MPItrampoline is probably not going to work out (for example LAMMPS)
          • unclear whether using MPItrampoline as a toolchain component will work well enough to be used in a common toolchain... maybe only opt-in where it makes sense?
        • OpenAI-Gym (PR #14779)
      • noteworthy software updates

Broader testing

  • EasyBuild v4.5.2 was crashing hard on SLES-based OSs (fixed in EasyBuild v4.5.3)
  • We should have caught this prior to the release of EasyBuild v4.5.2...
  • Current testing is too focused on RHEL derivates (mainly CentOS 7 + Rocky Linux 8 currently)
  • We should start using container images to test (selected?) contributions in more OS configurations
    • Different distros + versions (CentOS, Rocky, Ubuntu, openSUSE, ...)
    • Standard vs minimal vs fat configurations
      • standard: g++ and other common packages installed in OS
      • minimal: only the bare minimum required by EasyBuild: python(3), module, tar, gzip, bzip2, patch, make, ...
      • fat: also packages that are often available in the OS, and are known to cause trouble sometimes (Boost, cmake, ...)
  • This blows up the matrix of test configurations up a lot, so we have to make choices...
    • on generoso (Rocky Linux 8): ~1.3TB of disk space used for ~5.1k software installations (excl. sources)
    • only use standard configuration for building compilers, otherwise use minimal?
    • focus on CentOS 7 + Rocky 8 (all contributions)
    • make testing with other OSs opt-in, or avoid blocking PRs in case of problems that are not easy to fix?
  • new repository: https://github.com/easybuilders/easybuild-containers
    • starting point for testing EasyBuild in container images
    • Dockerfile for different OSs
    • Docker images are built automatically through GitHub Actions
    • can be consumed using Singularity, for example: singularity shell docker://ghcr.io/easybuilders/opensuse-15.4
    • only bare minimum of packages is installed: Python + Lmod
    • more stuff definitely needs to be added: tar, patch, make, etc.
  • TODO:
    • set up container recipes for standard vs minimal vs fat
    • maybe generate container recipes to facilitate maintenance?

OpenMPI + CUDA, OpenMPI 5.x

Q&A

  • Alexandre: support for skipping failing (tests for) extensions
    • big hammer: --skip-failing-exts
      • would be useful for R: try installing all extensions, don't give up if one or more fail
    • TensorFlow and PyTorch easyblocks should be made aware of --ignore-test-failure