HPC & reproducible research in Guix 1.1.0
Version 1.1.0 of Guix was announced yesterday. As the announcement points out, some 200 people contributed more than 14,000 commits since the previous release. This post focuses on important changes for HPC users, admins, and scientists made since version 1.0.1 was released in May 2019.
Reproducible science workflows
Here are some of the key improvements for the use of Guix as a tool for reproducible science:
- The new
guix time-machine
command makes it easy to “jump” back to a specific revision of Guix and reproduce precisely a given software environment. This is key to supporting reproducible science workflows over time. - The new “archival” checker of
guix lint
can send a “save” request to Software Heritage for the specified packages. This helps improve long-term archival of all the software Guix packages refer to. - The
guix pull
command now honors/etc/guix/channels.scm
. This allows cluster administrators to specify a default set of channels, which can help new users get started.
Container provisioning
guix pack
,
the declarative and reproducible container provisioning tool, has
received noteworthy improvements:
- When creating Docker or Singularity images,
guix pack
now record the environment variables needed for the execution of the applications added to the container. - Additionally,
guix pack
has a new--entry-point
command-line option to specify the name of the executable to run upondocker run
orsingularity run
. - Docker images produced by
guix pack
now include an empty/tmp
directory. Images also have a meaningful “repository name” now (the name shown when runningdocker images
). - Images produced by
guix pack -f squashfs
(for Singularity) are now reproducible bit-for-bit. This makes it possible for anyone to independently verify the authenticity of such an image, and is generally a prerequisite for better security and quality assurance. - A bug was fixed that
prevented
guix pack -f squashfs
from running on CentOS 7.
Packages
Here are highlights among the 3,514 packages added and 3,368 packages upgraded since the previous release:
- Guix-Jupyter, which provides Guix integration for Jupyter notebooks, was added.
- The Guix Workflow Language, which integrates workflows with reproducible software deployment, has been upgraded to 0.2.1.
- The Open Cascade Technology Library (OCCT) is now packaged.
- MPICH is now available.
- Open MPI is now at 4.0.3. Its packaging and that of high-speed network drivers has been greatly improved to achieve performance on a wide range of networking products.
- hwloc, the hardware locality library Open MPI depends on, is now at 2.2.0.
- LAPACK was upgraded to 3.9.0.
- There’s a new
gfortran-toolchain
package that pulls in GFortran and the whole tool chain (libc, Binutils, etc.). - GCC 9.3.0 is available.
- FEniCS and related packages were updated to 2019.1.0.post0.
- Julia has been upgraded to 1.3.1. In addition, a new build system for Julia packages is now available, making it easier to package Julia software in Guix.
- MPI4PY is now at 3.0.2, and SLEPC4PY and PETSC4PY are at 3.11.0.
- MUMPS has been updated to 5.2.1 and its shared libraries are now installed.
- For statisticians, there’s now a total of 1,368 R packages, many of which comes from Bioconductor.
Do not miss the release notes for other goodies. Enjoy the new release!
Unless otherwise stated, blog posts on this site are copyrighted by their respective authors and published under the terms of the CC-BY-SA 4.0 license and those of the GNU Free Documentation License (version 1.3 or later, with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts).