Expérimental : OpenMPI UCX Cuda Aware
Article mis en ligne le 30 septembre 2020

Version OpenMPI (4.0.4) compilé avec UCX et PGI pour une meilleur utilisation des liens Nvlink (Cuda Aware).
Cette librairie OpenMPI a donc vocation a être utilisée sur la Partition Volta d’Olympe.

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

Exemple de placement 2 processus par socket sur un noeud 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"