PVC MPI Usage

For the PVC partition, Intel MPI is the preferred GPU-aware MPI implementation. Load an impi environment module, to make it available.

To enable GPU support, set the environment variable I_MPI_OFFLOAD to "1" (in your jobscript). In case you make use of GPUs on multiple nodes, it is strongly recommended to use the psm3 libfabric provider (FI_PROVIDER=psm3)

Depending on your application’s needs set I_MPI_OFFLOAD_CELL to either tile or device to assign each MPI rank either a tile or the whole GPU device.

It is recommended to check the pinning by setting I_MPI_DEBUG to (at least) 3 and I_MPI_OFFLOAD_PRINT_TOPOLOGY to 1.

Refer to the Intel MPI documentation on GPU support for further information.

Example Job Script:

#!/bin/bash # example to use use 2 x (2 x 4) = 16 MPI processes, each assigned # to one of the two tiles (stacks) of an PVC GPU #SBATCH --partition=gpu-pvc #SBATCH --nodes=2 #SBATCH --ntasks-per-node=8 #SBATCH --job-name=pin-check # required for usage of Intel GPUs module load intel # required for MPI, apparently module load impi/2021.11 # required for GPU usage with MPI export FI_PROVIDER=psm3 # to enable GPU support in Intel MPI export I_MPI_OFFLOAD=1 # assign each rank a tile of a GPU export I_MPI_OFFLOAD_CELL=tile # for checking the process pinning export I_MPI_DEBUG=3 export I_MPI_OFFLOAD_PRINT_TOPOLOGY=1 mpirun ./application