|
1 | 1 | [](){#ref-uenv-prgenv-gnu} |
2 | 2 | # prgenv-gnu |
3 | 3 |
|
4 | | -!!! todo |
5 | | - write some docs |
| 4 | +Provides a set of tools and libraries built around the GNU compiler toolchain. |
| 5 | +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. |
| 6 | + |
| 7 | +!!! note "alternatives to prgenv-gnu" |
| 8 | + |
| 9 | + The [`prgenv-nvfortran`][ref-uenv-prgenv-nvfortran] is for applications that require the NVIDIA Fortran compiler - typically because they need to use OpenACC or CUDA Fortran. |
| 10 | + |
| 11 | + The [`linalg`][ref-uenv-linalg] environment is similar to prgenv-gnu, with additional linear algebra and mesh partitioning algorithms. |
| 12 | + |
| 13 | +## Versioning |
| 14 | + |
| 15 | +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`. |
| 16 | + |
| 17 | +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. |
| 18 | + |
| 19 | +| version | node types | system | |
| 20 | +|-----------|-----------|--------| |
| 21 | +| 24.7 | gh200, zen2 | daint, eiger, todi | |
| 22 | +| 24.11 | a100, gh200, zen2 | daint, eiger, santis, clariden, bristen | |
| 23 | + |
| 24 | +=== "24.11" |
| 25 | + |
| 26 | + The key updates in version 24.11 were: |
| 27 | + |
| 28 | + * upgrading the versions of gcc@13 and [email protected] |
| 29 | + * upgrading cray-mpich to version 8.1.30 |
| 30 | + * adding kokkos |
| 31 | + * adding gsl |
| 32 | + |
| 33 | + A complete list of packages exposed via the `default` and `modules` views is: |
| 34 | + |
| 35 | + * [[email protected]_1.9.2](https://packages.spack.io/package.html?name=aws-ofi-nccl) |
| 36 | + * [[email protected]](https://packages.spack.io/package.html?name=boost) |
| 37 | + * [[email protected]](https://packages.spack.io/package.html?name=cmake) |
| 38 | + * [[email protected]](https://packages.spack.io/package.html?name=cray-mpich) |
| 39 | + * [[email protected]](https://packages.spack.io/package.html?name=cuda) |
| 40 | + * in the `gh200` and `a100` images |
| 41 | + * [[email protected]](https://packages.spack.io/package.html?name=fftw) |
| 42 | + * [[email protected]](https://packages.spack.io/package.html?name=fmt) |
| 43 | + * [[email protected]](https://packages.spack.io/package.html?name=gcc) |
| 44 | + * [[email protected]](https://packages.spack.io/package.html?name=gsl) |
| 45 | + * [[email protected]](https://packages.spack.io/package.html?name=hdf5) |
| 46 | + * [[email protected]](https://packages.spack.io/package.html?name=kokkos-kernels) |
| 47 | + * [kokkos-tools@develop](https://packages.spack.io/package.html?name=kokkos-tools) |
| 48 | + * [[email protected]](https://packages.spack.io/package.html?name=kokkos) |
| 49 | + * [[email protected]](https://packages.spack.io/package.html?name=libtree) |
| 50 | + * [[email protected]](https://packages.spack.io/package.html?name=lua) |
| 51 | + * [[email protected]](https://packages.spack.io/package.html?name=lz4) |
| 52 | + * [[email protected]](https://packages.spack.io/package.html?name=meson) |
| 53 | + * [[email protected]](https://packages.spack.io/package.html?name=nccl-tests) |
| 54 | + * [[email protected]](https://packages.spack.io/package.html?name=nccl) |
| 55 | + * [[email protected]](https://packages.spack.io/package.html?name=netlib-scalapack) |
| 56 | + * [[email protected]](https://packages.spack.io/package.html?name=ninja) |
| 57 | + * [[email protected]](https://packages.spack.io/package.html?name=openblas) |
| 58 | + * built with the OpenMP threading back end |
| 59 | + * [[email protected]](https://packages.spack.io/package.html?name=osu-micro-benchmarks) |
| 60 | + * [[email protected]](https://packages.spack.io/package.html?name=papi) |
| 61 | + * [[email protected]](https://packages.spack.io/package.html?name=python) |
| 62 | + * [[email protected]](https://packages.spack.io/package.html?name=superlu) |
| 63 | + * [[email protected]](https://packages.spack.io/package.html?name=zlib-ng) |
| 64 | + |
| 65 | +## How to use |
| 66 | + |
| 67 | +The environment is designed as a fairly minimal set of |
| 68 | + |
| 69 | +There are three ways to access the software provided by prgenv-gnu, once it has been started. |
| 70 | + |
| 71 | +=== "the default view" |
| 72 | + |
| 73 | + 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. |
| 74 | + |
| 75 | + !!! example "test mpi compilers and python provided by prgenv-gnu/24.11" |
| 76 | + ```bash |
| 77 | + # start using the default view |
| 78 | + > uenv start --view=default prgenv-gnu/24.11:v1 |
| 79 | + |
| 80 | + # the python executable provided by the uenv is the default, and is a recent version |
| 81 | + > which python |
| 82 | + /user-environment/env/default/bin/python |
| 83 | + > python --version |
| 84 | + Python 3.12.5 |
| 85 | + |
| 86 | + # the mpi compiler wrappers are also available |
| 87 | + > which mpicc |
| 88 | + /user-environment/env/default/bin/mpicc |
| 89 | + > mpicc --version |
| 90 | + gcc (Spack GCC) 13.3.0 |
| 91 | + > gcc --version # the compiler wrapper uses the gcc provided by the uenv |
| 92 | + gcc (Spack GCC) 13.3.0 |
| 93 | + ``` |
| 94 | + |
| 95 | +=== "modules" |
| 96 | + |
| 97 | + The uenv provides modules for all of the software packages, which can be made available by using the `modules` view in |
| 98 | + No modules are loaded when a uenv starts, and have to be loaded individually using `module load`. |
| 99 | + |
| 100 | + !!! example "starting prgenv-gnu and listing the provided modules" |
| 101 | + ```bash |
| 102 | + > uenv start prgenv-gnu/24.11:v1 --view=modules |
| 103 | + > module avail |
| 104 | + ---------------------------- /user-environment/modules ---------------------------- |
| 105 | + aws-ofi-nccl/git.v1.9.2-aws_1.9.2 lua/5.4.6 |
| 106 | + boost/1.86.0 lz4/1.10.0 |
| 107 | + cmake/3.30.5 meson/1.5.1 |
| 108 | + cray-mpich/8.1.30 nccl-tests/2.13.6 |
| 109 | + cuda/12.6.2 nccl/2.22.3-1 |
| 110 | + fftw/3.3.10 netlib-scalapack/2.2.0 |
| 111 | + fmt/11.0.2 ninja/1.12.1 |
| 112 | + gcc/13.3.0 openblas/0.3.28 |
| 113 | + gsl/2.8 osu-micro-benchmarks/5.9 |
| 114 | + hdf5/1.14.5 papi/7.1.0 |
| 115 | + kokkos-kernels/4.4.01 python/3.12.5 |
| 116 | + kokkos-tools/develop superlu/5.3.0 |
| 117 | + kokkos/4.4.01 zlib-ng/2.2.1 |
| 118 | + libtree/3.1.1 |
| 119 | + ``` |
| 120 | + |
| 121 | +=== "Spack" |
| 122 | + |
| 123 | + 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. |
| 124 | + |
| 125 | + [Check out the guide for using Spack with uenv][ref-building-uenv-spack]. |
| 126 | + |
0 commit comments