Il est nécessaire d’utiliser la version d’openmpi qui va avec le compilateur utilisé pour votre application : si vous compilez avec icc, utilisez une version icc d’Openmpi
Généralités
Quelque soit la version d’openmpi, il est souhaitable de modifier la taille dédiée à la pile :
ulimit -s 10240
Openmpi - Version 2.0.2
8 modules fournis : 2 compilateurs (gnu et icc)
X multithreading on/off
X ilp64 on/off
Exemple :
module purge module load openmpi/gnu/mt/2.0.2.10 ulimit -s 10240 srun ...
Openmpi - Version 3.0.2
3 modules fournis : Un module par compilateur (gnu, icc, pgi). Tous les modules proposent une version "Multitheadée" d’openmpi. La version ilp64 n’est pas proposée dans cette version.
Mode d’utilisation cuda-aware mpi
Dans ce mode, disponible sur les versions 3 d’openmpi mais non activé par défaut, les gpus sont capables de communiquer directement entre eux sans passer par les cpus. A l’intérieur d’un nœud ces communications utilisent les liens nvlink. Les communications sont donc plus rapides et le code est plus performant. Pour utiliser ce mode, il est nécessaire de :
- désactiver le mode de communication
mxm
- activer explicitement le mode "
cuda-aware
"
module purge module load openmpi/gnu/3.0.2 cuda/9.1.85.3 ulimit -s 10240 export OMPI_MCA_mtl=^mxm export OMPI_MCA_pml=^yalla export OMPI_MCA_mpi_cuda_support=1 srun ./mon-appli-gpu