Le module correspondant :
module purge module load openmpi/pgi/4.0.4-UCX-cuda module li Currently Loaded Modulefiles: 1) cuda/10.1.105 2) gcc/7.3.0 3) pgi/19.10 4) openmpi/pgi/4.0.4-UCX-cuda
Dans le cas ou l'application est linkée statiquement (voir https://github.com/openucx/ucx/wiki/NVIDIA-GPU-Support ), il est nécessaire d'activer le paramètre -x UCX_MEMTYPE_CACHE=n
et donc d'utiliser la commande mpirun
:
mpirun -x UCX_MEMTYPE_CACHE=n -np 4 ./$EXE
ou bien
export UCX_MEMTYPE_CACHE=n mpirun -np 4 ./$EXE
Exemple de placement 2 processus par socket sur un nœud Volta d’Olympe (+ activation Nivida MPS):
#!/bin/bash #SBATCH --time 00:15:00 #SBATCH --nodes=2 #SBATCH --ntasks-per-node=8 #SBATCH --gres=gpu:4 # ----------- module purge module load openmpi/pgi/4.0.4-UCX-cuda # ----------- ##---UCX #fichier machinefile ExpandNodeList -r -p $SLURM_NTASKS_PER_NODE $SLURM_NODELIST > machine_file #--MPS #Activation Nvidia MPS clush -bw ${SLURM_JOB_NODELIST} "nvidia-cuda-mps-control -d" # ----------- # Positionnement des compteurs Nvlink à zero - set counters: nvidia-smi nvlink -sc 0bz #placement de de processus par socket : --map-by ppr:2:socket - ppr : process per ressource ; ressource=socket mpirun --bind-to core --map-by ppr:2:socket -x UCX_MEMTYPE_CACHE=n --machinefile machine_file -n 16 ./$EXE | tee $LOG # lecture des compteurs -read counters: nvidia-smi nvlink -g 0 # ràz - reset counters: nvidia-smi nvlink -sc 0bn #Désactivation Nvidia MPS clush -bw ${SLURM_JOB_NODELIST} "echo quit | nvidia-cuda-mps-control"