1 / 22

Une brève introduction à MPI

Une brève introduction à MPI. Destinée à l ’usage des utilisateurs de CIMENT Laurent Desbat juin 2002. 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.

aleta
Download Presentation

Une brève introduction à MPI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Une brève introduction à MPI Destinée à l ’usage des utilisateurs de CIMENT Laurent Desbat juin 2002

  2. 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

  3. 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, ...

  4. 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)

  5. 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

  6. 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)

  7. 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.

  8. 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

  9. 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

  10. 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

  11. MPI, comment l’utilise-t’on ? • Mon premier programme en C : mpifileC.c • Mon premier programme en FORTRAN mpifileF.f

  12. 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

  13. 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

  14. 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

  15. Communications collectives data A0 A0 broadcast A0 processes A0 scatter A0 A1 A2 A0 A1 gather A2

  16. Communications collectives data A0 A0 B0 C0 allgather B0 A0 B0 C0 processes C0 A0 B0 C0 A0 A1 A2 A0 B0 C0 alltoall B0 B1 B2 A1 B1 C1 C0 C1 C2 A2 B2 C2

  17. 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

  18. Lien vers tomo3D.ppt Lien vers les sources séquentielles Lien vers TP Lien vers solution

  19. 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

  20. 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.

  21. 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/

  22. 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

More Related