Skip to content

prgenv-nvfortran

The prgenv-nvfortran uenv provides a set of tools and libraries for building applications that need the NVIDIA Fortran compiler Specifically, it is intended for building and running applications that require one of the following: * OpenACC for GPU acceleration; * CUDA Fortran for GPU acceleration.

Note

By default, use the prgenv-gnu toolchain for a generic environment for building GPU applications. It provides CUDA and libraries with GPU support enabled for the Grace-Hopper nodes, the gnu compiler toolchain that it provides has better C and C++ standards complianace, and it also provides more libraries and tools than this nvfortran uenv.

Versioning

The naming scheme is prgenv-nvfortran/<version>:v<i>, where <version> matches the version of the NVIDIA HPC SDK.

  • the SDK is released every two months, and is numbered in the YY.M[M] format, e.g. 24.1 and 24.11.
  • the prgenv-nvfortran will be released three times a year (every second NVHPC release).

The currently supported versions are:

prgennv-nvhpc NVHPC
24.11 24.11
I need a different version

If you need a version of the NVHPC SDK that is not provided, e.g. the 25.1 version that falls between 24.11 and 25.4, make a request on the CSCS service desk.

How to use

The image is only provided on Alps systems that have NVIDIA GPUs. To see which versions have been installed on a system:

# search for uenv on the current system
uenv image find prgenv-nvfortran

# search for uenv on all systems
uenv image find prgenv-nvfortran@*

# pull a version
uenv image find prgenv-nvfortran/24.11:v1

The nvfort view loads all of the packages into your environment (equivalent to loading all the modules at once):

uenv start prgenv-nvfortran/24.11:v1 --view=nvfort
mpif90 --version

The above example shows that the MPI compiler wrappers are using the underlying NVIDIA compiler. The following wrappers are available:

  • mpif77
  • mpif90
  • mpifort

And the following C/C++ wrapers are available:

  • mpicc
  • mpicxx

The modules view will start the uenv, and make a set of modules available:

> uenv start prgenv-nvfortran/24.11:v1 --view=nvfort,modules
> module avail
---------------------------- /user-environment/modules ----------------------------
   aws-ofi-nccl/master    libtree/3.1.1           ninja/1.12.1
   cmake/3.30.5           lua/5.4.6               nvhpc/24.11
   cray-mpich/8.1.30      lz4/1.10.0              nvpl-blas/0.3.0
   cuda/12.6.0            meson/1.5.1             nvpl-lapack/0.2.3.1
   fftw/3.3.10            nccl-tests/2.13.6       osu-micro-benchmarks/5.9
   fmt/11.0.2             nccl/2.22.3-1           python/3.12.5
   gcc/13.2.0             netcdf-c/4.9.2          zlib-ng/2.2.1
   hdf5/1.14.5            netcdf-fortran/4.6.1

None of the modules are loaded by default, so you will have to load the required modules