~~SLIDESHOW yatil~~ ====== Lancement des processus MPI ====== Cet article indique comment sont lancés les processus MPI sous Slurm ===== Références ===== * http://slurm.schedmd.com/mpi_guide.htm * [[https://software.intel.com/en-us/articles/how-to-use-slurm-pmi-with-the-intel-mpi-library-for-linux | How to use Slurm PMI with Intel MPI ? ]] * {{:mpi:intel-mpi:pmi2.pdf|PMI: A Scalable Process Management Interface for Extreme-Scale Systems}}, //Argonne National Laboratory// ===== Processus MPI ===== ==== Principe : rappel ==== * Le modèle de programmation MPI implique le lancement et la mise en communication de plusieurs //processus// différents * Les processus peuvent éventuellement être répartis sur des serveurs différents ==== Problème ==== Se pose le problème de savoir * qui (quel programme) va lancer les processus MPI * comment sera déterminé la liste des machines à utiliser, et le nombre de processus à exécuter sur chacune * quel mécanisme sera utilisé pour exécuter les processus sur des machines distantes * à quelle vitesse ce mécanisme se déroule (les gros cluster comportant plusieurs centaines ou milliers de nœuds) ==== Intégration avec l'ordonnanceur ==== * Sur un cluster, les ressources, donc la liste des noeuds à utiliser, sont allouées dynamiquement par l'ordonnanceur * L'ordonnanceur dispose déjà d'un mécanisme de lancement de processus sur les noeuds Les librairies MPI et les ordonnanceurs (slurm et d'autres) ont essayé de converger pour apporter une certaine intégration... ===== Interface PMI ===== * PMI = Process Management Interface * Couche logicielle permettant la communication entre la librairie MPI et l'ordonnanceur ===== Avec slurm ===== * Plusieurs modes d'intégration sont possibles entre les librairies MPI et slurm * Le mode choisi est * d'utiliser PMI fourni par slurm * et slurm sera le //Process Manager// (contrôle des processus) * Pour Intel MPI, le choix de la librairie PMI est indiqué via la variable d'environnement ''I_MPI_PMI_LIBRARY'' positionné par le //module//