Utilisation d’OpenMPI

Le mésocentre propose l’utilisation de la librairie implémentant la norme MPI : OpenMPI. Elle est chargeable au travers des modules (openmpi GCC ou Intel).

Pour exécuter un calcul en OpenMPI, après avoir chargé le module OpenMPI désiré, il est conseillé de tenir compte des recommandations suivantes :

Sur le Cluster :

mpirun -n "${CPUS}" -machinefile "${OAR_NODEFILE}" ./application
	

CPUS est le nombre de processeurs demandés.

CPUS=$(wc -l ${OAR_NODEFILE} | awk '{print $1}')
	

Pour optimiser les exécutions de code il est possible d’ajouter des options :

-bysocket restreint l’utilisation à un socket (plus rapide vis à vis de la mémoire). Cette option peut être remplacée par -bynode si l’on ne veut pas charger le nœud entièrement.
-bind-to-core évite que les processus ne se « déplacent » sur les cœurs (accès mémoire optimisés).

Sur la SMP :

export PSM_DEVICES="self,shm"
mpirun -n "${CPUS}" -machinefile "${OAR_NODEFILE}" ./application
	

La différence vient de la variable d’environnement PSM_DEVICES qui doit être spécifiée afin d’indiquer à OpenMPI que le calcul est effectué sur une seule machine.

Remarque 1 : La variable est importée directement si vous utilisez un des modules openmpi.
Remarque 2 : Si l’application retourne une erreur PSM, essayez sans utiliser l’option -bysocket.

Pour toute compilation :
Si vous rencontrez des erreurs à la compilation avec OpenMPI, vérifiez que vous utilisez le compilateur dédié au MPI. Dans le cas de Make, CMake… il est conseillé d’exporter CXX=mpic++, FC=mpif90 et CC=mpicc.


Dernière mise à jour : 21 novembre 2016 mesocentre-techn@univ-amu.fr

+33 (0)4 13 94 58 29 / (0)4 13 94 58 27