HPC & reproducible research in Guix 1.2.0
Version 1.2.0 of GNU Guix was announced yesterday. Some 200 people contributed more than 10,000 commits since the previous release. This post focuses on important changes for HPC users, admins, and practitioners made since version 1.1.0 was released in April 2020.
Package customization and faster “relocatable packs” for HPC
We’re giving users more flexibility on the command line, with the
addition of three package transformation
--with-debug-info (always debug in good
--without-tests. Consider this example:
guix build octave-cli \ --with-c-toolchain=fftw=gcc-toolchain@10 \ --with-c-toolchain=fftwf=gcc-toolchain@10
The command above builds a variant of the
fftwf packages using
version 10 of
gcc-toolchain instead of the default tool chain, and then builds
a variant of the GNU Octave command-line interface using them. GNU Octave
itself is also built with
This other example builds the Hardware Locality (hwloc) library and its dependents up to intel-mpi-benchmarks with the Clang C compiler:
guix build --with-c-toolchain=hwloc=clang-toolchain \ intel-mpi-benchmarks
--with-c-toolchain can come in handy if you want to check the impact
of the compiler toolchain on the performance of your software stack.
command creates “application bundles” that can be used to deploy
software on machines that do not run Guix (yet!), such as HPC clusters.
Since its inception in
it has seen a number of improvements. Code in relocatable packs can now
run more efficiently thanks to the addition of the
which we covered back in
Reproducible research workflows
The new option
shows the shortest path between two nodes. The example below shows the
shortest path between the packages gmsh and cunit:
$ guix graph --path gmsh cunit email@example.com firstname.lastname@example.org email@example.com firstname.lastname@example.org
command can now be passed a script, which eases package exploration in
notably when dealing with the new Scheme
(guix transformation) module for
On the side of long-term archival of all the software Guix packages refer to,
Guix now serves the file
that is ingested by Software Heritage via the
In addition to the “archival” check of
guix lint which sends a “save”
request to Software Heritage for the specified packages. More packages are
Here are highlights among the 2,179 packages added and 4,487 packages upgraded since the previous release:
- Gmsh has been upgraded to 4.6.0.
- MPICH was added, version 3.3.2.
- Open MPI is now at 4.0.5.
- GCC 10.2.0 is available and LLVM, Clang 11.0.0 as well.
- Julia has been upgraded to 1.5.2.
- MPI4PY is at 3.0.3.
- For statisticians, there’s now a total of 1,488 R packages, many of which come from Bioconductor 3.11.
The manual has been improved in various ways. In particular, the “Programming interface” section has been expounded and should be helpful for those writing package definitions. It is fully translated into French, German, and Spanish, with partial translations in Russian and Chinese.
Do not miss the release notes for more.
If you’re a first-time user, take a look at the new “Getting
section and try out
guix help to get an overview of the available
Enjoy the new release!