prgenv-gnu¶
Provides a set of tools and libraries built around the GNU compiler toolchain. It is the go to programming environment on all systems and target node types, that is it is the first that you should try out when starting to compile an application or create a python virtual environment.
alternatives to prgenv-gnu
The prgenv-nvfortran
is for applications that require the NVIDIA Fortran compiler - typically because they need to use OpenACC or CUDA Fortran.
The linalg
environment is similar to prgenv-gnu, with additional linear algebra and mesh partitioning algorithms.
Versioning¶
The naming scheme is prgenv-gnu/<version>
, where <version>
has the YY.M[M]
format, for example November 2024 is 24.11
, and January 2025 would be 25.1
.
The release schedule is not fixed, with new versions will be released roughly every 3-6 months, when there is a compelling reason to update.
version | node types | system |
---|---|---|
25.06 (prerelease) | gh200 | daint |
24.11 | a100, gh200, zen2 | daint, eiger, santis, clariden, bristen |
24.7 | gh200, zen2 | daint, eiger, todi |
The key updates in version 24.11:v1 from the 24.7 version were:
- upgrading the versions of gcc@13 and cuda@12.6
- upgrading cray-mpich to version 8.1.30
- adding kokkos
- adding gsl
all packages exposed via the default
and modules
views in v1
- aws-ofi-nccl@git.v1.9.2-aws_1.9.2
- boost@1.86.0
- cmake@3.30.5
- cray-mpich@8.1.30
- cuda@12.6.2
- in the
gh200
anda100
images
- in the
- fftw@3.3.10
- fmt@11.0.2
- gcc@13.3.0
- gsl@2.8
- hdf5@1.14.5
- kokkos-kernels@4.4.01
- kokkos-tools@develop
- kokkos@4.4.01
- libtree@3.1.1
- lua@5.4.6
- lz4@1.10.0
- meson@1.5.1
- nccl-tests@2.13.6
- nccl@2.22.3-1
- netlib-scalapack@2.2.0
- ninja@1.12.1
- openblas@0.3.28
- built with the OpenMP threading back end
- osu-micro-benchmarks@5.9
- papi@7.1.0
- python@3.12.5
- superlu@5.3.0
- zlib-ng@2.2.1
24.7:v2 changelog
The v2
update added netcdf
, specifically the following packages:
Prerelease
The prgenv-gnu/25.06
uenv is currently available as a prerelease on daint, and is subject to change before the final release.
Prereleases are tagged with rcN
tags.
Let us know if you find issues with the uenv.
Unstable Spack version used for the uenv
If you are building software through spack on top of a uenv, be aware that the 25.06 uenv is based on a prerelease version of Spack that contains many breaking changes. Using a commit other than the one used to build the uenv will likely result in issues.
The key updates in version 25.06 compared to 24.11 are:
- upgrading GCC to version 14 and CUDA to version 12.9
- upgrading cray-mpich to version 8.1.32
all packages exposed via the default
and modules
views in v1
The list of 25.06 package versions is yet to be finalized
How to use¶
The environment is designed as a fairly minimal set of
There are three ways to access the software provided by prgenv-gnu, once it has been started.
The simplest way to get started is to use the default
file system view, which automatically loads all of the packages when the uenv is started.
test mpi compilers and python provided by prgenv-gnu/24.11
# start using the default view
$ uenv start --view=default prgenv-gnu/24.11:v1
# the python executable provided by the uenv is the default, and is a recent version
$ which python
/user-environment/env/default/bin/python
$ python --version
Python 3.12.5
# the mpi compiler wrappers are also available
$ which mpicc
/user-environment/env/default/bin/mpicc
$ mpicc --version
gcc (Spack GCC) 13.3.0
$ gcc --version # the compiler wrapper uses the gcc provided by the uenv
gcc (Spack GCC) 13.3.0
The uenv provides modules for all of the software packages, which can be made available by using the modules
view in
No modules are loaded when a uenv starts, and have to be loaded individually using module load
.
starting prgenv-gnu and listing the provided modules
$ uenv start prgenv-gnu/24.11:v1 --view=modules
$ module avail
---------------------------- /user-environment/modules ----------------------------
aws-ofi-nccl/git.v1.9.2-aws_1.9.2 lua/5.4.6
boost/1.86.0 lz4/1.10.0
cmake/3.30.5 meson/1.5.1
cray-mpich/8.1.30 nccl-tests/2.13.6
cuda/12.6.2 nccl/2.22.3-1
fftw/3.3.10 netlib-scalapack/2.2.0
fmt/11.0.2 ninja/1.12.1
gcc/13.3.0 openblas/0.3.28
gsl/2.8 osu-micro-benchmarks/5.9
hdf5/1.14.5 papi/7.1.0
kokkos-kernels/4.4.01 python/3.12.5
kokkos-tools/develop superlu/5.3.0
kokkos/4.4.01 zlib-ng/2.2.1
libtree/3.1.1
The gnu programming environment is a very good base for building software with Spack, because it provides compilers, MPI, Python and common packages like hdf5.