Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin...
-
Upload
lucienne-bailly -
Category
Documents
-
view
106 -
download
2
Transcript of Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin...
![Page 1: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/1.jpg)
Une brève introduction à MPI
Destinée à l ’usage des utilisateurs de CIMENT
Laurent Desbat
juin 2002
![Page 2: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/2.jpg)
Plan• MPI, qu’est-ce que c’est ?
• MPI, comment l’utilise-t’on ?
• Notion de communications globales/collectives
• Un exemple réel d’imagerie médicale SPECT
![Page 3: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/3.jpg)
MPI, qu’est-ce que c’est ? MPI : Message Passing Interface
• Le modèle de programmation est celui de processus communicants, coopérant à l’exécution d’une tâche.– Chaque processus a ses propres données– Les processus peuvent communiquer entre eux
• MPI_Send, MPI_Recv, MPI_Bcast, ...
– Et se synchroniser• MPI_Barrier, ...
![Page 4: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/4.jpg)
MPI, qu’est-ce que c’est ?
• MPI permet de gérer– l ’environnement d ’exécution– les communications point à point (Send, Recv)– les communications collectives (Bcast, Scatter,
Gather,…)– les groupes de processus et des communicateurs– la topologie d’inter-connexion des processus
(grilles, tore, arbre,…=> notion de voisinage)
![Page 5: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/5.jpg)
Plan
• MPI, qu’est-ce que c’est ?
• MPI, comment l’utilise-t’on ?
• Notion de communications globales/collectives
• Un exemple réel d’imagerie médicale SPECT
![Page 6: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/6.jpg)
MPI, comment l’utilise-t’on ?
• Initialisation de l’environnement (début)– C/C++ : MPI_Init(&argc,&argv); – FORTRAN : MPI_INIT(ierr)
• Et destruction (fin)– MPI_Finalize();– FORTRAN : MPI_FINALIZE(ierr)
![Page 7: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/7.jpg)
MPI, comment l’utilise-t’on ?• Un processus est identifié par son groupe et
son rang (dans le groupe).– int MPI_Comm_rank(MPI_comm comm, int
*rank)– int MPI_Comm_size(MPI_comm comm, int *size)– exemple d’utilisation :
• MPI_Comm_rank(MPI_COMM_WORLD, &myrank)– MPI_COMM_WORLD est le communicateur global (tous les
processus du programme MPI courant en sont élément). Il est créé par MPI_Init.
![Page 8: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/8.jpg)
MPI, comment l’utilise-t’on ?• MPI permet de gérer les communicateurs
– ils sont définis par un groupe et un contexte– Ils définissent la portée des communications
• [Le contexte d ’un communicateur détermine certaines propriétés (mais l ’utilisateur ne peut agir directement dessus)]
• Exemple : MPI_COMM_WORLD créé à l ’initalisation comprends tous les processus de votre exécution parallèle
![Page 9: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/9.jpg)
MPI, comment l’utilise-t’on ?• MPI permet de gérer les communications• Communication point à point
– l’enveloppe d’un message est constituée de • le rang du processus émetteur • le rang du processus récepteur• une étiquette de message • le nom du communicateur
– Les données sont typées• MPI_CHAR, MPI_SHORT, MPI_INT, MPI_LONG, MPI_UNSIGNED_CHAR,
MPI_UNSIGNED_SHORT, MPI_UNSIGNED, MPI_UNSIGNED_LONG, MPI_FLOAT, MPI_DOUBLE, MPI_LONG_DOUBLE
![Page 10: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/10.jpg)
MPI, comment l’utilise-t’on ?• Communication bloquantes
– int MPI_Send(void* buf, int count,MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
– int MPI_Recv(void* buf,int count,MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)
• MPI_ANY_SOURCE et/ou MPI_ANY_TAG peuvent être utilisés, MPI_PROC_NULL (proc. fictif=sans effet)
• le status est une structure qui contient en sortie la source et le tag du message reçu
– status.MPI_SOURCE ; status.MPI_TAG
![Page 11: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/11.jpg)
MPI, comment l’utilise-t’on ?
• Mon premier programme en C : mpifileC.c
• Mon premier programme en FORTRAN mpifileF.f
![Page 12: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/12.jpg)
Plan
• MPI, qu’est-ce que c’est ?
• MPI, comment l’utilise-t’on ?
• Notion de communications globales/collectives
• Un exemple réel d’imagerie médicale SPECT
![Page 13: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/13.jpg)
Communications collectives
• Elles impliquent un groupe de processeurs
• Contraintes– la quantité d ’information envoyée doit être
identique à la quantité d ’info reçue– le même communicateur doit être invoqué par
tous les processus participant – pas de TAG
![Page 14: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/14.jpg)
Communications collectives• Synchronisation
– int MPI_Barrier(MPI_Comm com)
• Transfert de données : MPI_Bcast, MPI_Scatter, MPI_Gather, MPI_Allgather,MPI_Alltoall– int MPI_Bcast(void* buffer, int count, MPI_Datatype datatype, int root,
MPI_Comm comm )
• Transfert de données et calcul, puis eventuellement transfert du résultat : MPI_Reduce, MPI_Allreduce, MPI_Reduce_Scatter, MPI_Scan– int MPI_Reduce(sendbuf,recvbuf,count,datatype,op,root,comm)– op est un MPI_Op (MPI_MAX, MPI_SUM, MPI_PROD), voir aussi MPI_Op_create
pour la création de nouveaux op
![Page 15: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/15.jpg)
Communications collectives
A0 A0
A0
A0
A0 A1 A2 A0
A1
A2
datapr
oces
ses broadcast
scatter
gather
![Page 16: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/16.jpg)
Communications collectivesdata
proc
esse
s A0
B0
C0
A0
A0
A0
allgather
alltoallA0
B0
C0
A1 A2
B0
B0
B0
C0
C0
C0
B1 B2
C1 C2
A0
A1
A2
B0 C0
B1 C1
B2 C2
![Page 17: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/17.jpg)
Plan• MPI, qu’est-ce que c’est ?
• MPI, comment l’utilise-t’on ?
• Notion de communications globales/collectives
• Un exemple réel d’imagerie médicale SPECT
![Page 18: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/18.jpg)
Lien vers tomo3D.ppt
Lien vers TP
Lien vers solution
Lien vers les sources séquentielles
![Page 19: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/19.jpg)
Conclusion
• Très peu de connaissances sont nécessaires pour démarrer sous MPI
• Primitives de base– MPI_Init et MPI_Finalize– MPI_Comm_rank, MPI_Comm_size– MPI_Send et MPI_Recv– MPI_Barrier
![Page 20: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/20.jpg)
Quelques Liens
• Sur eclair (machine alpha)– /usr/opt/MPI190/mpi_guide.ps
• Bibliographie– Marc Snir et al. MPI, the complete reference. Second edition, MIT
Press, 1998. Vol1, The MPI core, Vol2, MPI-2.
– William Gropp, Ewing Lusk et Anthony Skjellum. Usining MPI : Portable parallel Programming with the Message Passing Interface. MIT Press, 1994.
– Peter S. pacheco. Parallel Programming with MPI. Morgan Kaufman Ed., 1997.
![Page 21: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/21.jpg)
Quelques Liens
• Distributions (domaine public) – http://www.lam-mpi.org/– http://www-unix.mcs.anl.gov/mpi/mpich
• Tutoriaux – http://webct.ncsa.uiuc.edu:8900/webct/public/
home.pl– http://www-unix.mcs.anl.gov/mpi/tutorial– http://www.idris.fr/
![Page 22: Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.](https://reader036.fdocument.pub/reader036/viewer/2022062511/551d9db7497959293b8dbcd4/html5/thumbnails/22.jpg)
Perspectives et suitesPlan d’un cours avancé
• Notion de communications non-bloquantes
• Notion de types et types dérivés
• Notion de communicateurs
• Notion de topologie