Ada : exécutions sous environnement Intel

L'IDRIS vous offre désormais la possibilité d'exécuter vos codes MPI ou hybrides (MPI + OpenMP/Pthreads) dans l'environnement Intel (via mpirun) en plus de l'environnement IBM (via poe) qui était le seul disponible jusqu'à présent. Il est également possible d'utiliser le mode d'exécution MPMD avec Intel MPI pour coupler plusieurs code MPI.

Nouveaux environnements Intel

Cette nouvelle fonctionnalité s'accompagne de la mise à disposition de nouveaux environnements Intel :

$ module avail intel
------------- /smplocal/pub/Modules/IDRIS/modulefiles/compilateurs --------------
intel/2012.0   intel/2013.0   intel/2013.1(default)   intel/2015.2   intel/2016.2
  • Nous vous recommandons de compiler et d'exécuter vos codes sous un même environnement Intel : utilisez la même commande module load intel/… à l'exécution qu'à la compilation.
    • Cependant, un code compilé avec intel/2013.1 peut aussi être exécuté sous un environnement plus récent (Intel/2015.2 ou intel/2016.2).
    • Le contraire n'est pas garanti : un code compilé sous intel/2016.2 ne s'exécutera certainement pas sous intel/2013.1.
  • ATTENTION : un code compilé sous intel/2015.2 ou intel/2016.2 NE PEUT PAS être exécuté sous l'environnement IBM (via poe) :
    • Il y a incompatibilité entre la bibliothèque MPI IBM actuellement en production et les bibliothèques MPI Intel 5.0.xx et 5.1.xx faisant partie de ces nouveaux environnements Intel.

Exécutions sous environnement Intel

  • Pour optimiser les performances des codes lors des exécutions sous un environnement Intel, l'IDRIS positionne automatiquement certaines variables d'environnement. Ainsi, la variable Intel I_MPI_PIN_DOMAIN est valorisée pour permettre le binding des processus MPI et des threads (jobs hybrides) sur les cœurs physiques de la machine.
  • Les limites pour le nombre de processus MPI, le nombre de threads, le temps elapse et la mémoire des jobs sont les mêmes que celles des jobs IBM : la structure des classes batch est inchangée (voir la sortie de la commande news class).
  • ATTENTION : l'environnement intel/2013.0 ne peut pas être utilisé pour une exécution batch (job LoadLeveler). En effet, la commande mpirun associée est buggée et renvoie alors le message d'erreur suivant :
$ mpirun -np 8 ./a.out
[mpiexec@ada295] HYDT_bscd_ll_launch_procs (./tools/bootstrap/external/ll_launch.c:67): ll does not support user-defined host lists
*** glibc detected *** mpiexec.hydra: munmap_chunk(): invalid pointer: 0x00000000024bb660 ***

Compatibilité compilation/exécution suivant les environnements

  • Tableau indiquant les environnements d'exécution possibles suivant l'environnement Intel utilisé pour compiler votre code.
Compilation
sous Intel
Exécution
PE IBM (1)
Exécution
intel/2012.0
Exécution
intel/2013.0
Exécution
intel/2013.1
Exécution
intel/2015.2
Exécution
intel/2016.2
2012.0 Oui Oui (2) Non (4) Oui Oui Oui
2013.0 Oui Non (4) Oui Oui Oui
2013.1 Oui Non (4) Oui (2) Oui Oui
2015.2 Non (3) Non (4) Oui (2) Oui
2016.2 Non (3) Non (4) Oui (2)

(1) PE IBM est le Parallel Environnement d'IBM (exécution via poe).
(2) Situation recommandée à l'IDRIS : compiler et exécuter vos codes sous un même environnement Intel.
(3) Il y a incompatibilité entre la bibliothèque MPI IBM actuellement en production et les bibliothèques MPI Intel 5.0.xx et 5.1.xx faisant partie des nouveaux environnements Intel 2015.2 et 2016.2.
(4) La commande mpirun associée à intel/2013.0 est buggée et renvoie un message d'erreur lors d'une exécution batch (job LoadLeveler).