Contexte
Pour exploiter la force de calcul de sa machine, cela n'est pas ardu. Il suffit de lancer la tĂąche souhaitĂ©e et d'attendre le rĂ©sultat du calcul localement. En revanche, lorsque le calcul nĂ©cessaire est plus important, nĂ©cessitant plus dâune machine, la tĂąche paraĂźt plus compliquĂ©. En effet, chaque machine possĂšde son environnement, sa configuration propre et son rĂ©seau. C'est pourquoi une norme tacite est apparue en 1993, proposĂ©e par un groupe de chercheurs lors de la convention des supercalculateurs car aucune norme nâexistait auparavant. Encore aujourdâhui, aucune norme provenant dâorganismes tel que ISO, lâIETF ou IEEE nâexiste.
Pour obtenir une large compatibilitĂ© la convention utilise des objets identiques dans les langages de programmation qui disposent dâune correcte implĂ©mentation. Ce niveau dâabstraction rend la communication supportĂ©e sur nâimporte quelle machine et langage respectant la convention.

Voici la liste ses avancés majeures de la norme MPI :
- MPI-1.0 : Création du standard
- MPI-2.0 : Amélioration des performances
- MPI-3.0 : Introduction du partage de mémoire parallélisé (i.e. lit la mémoire sur une autre machine du réseau)
- MPI-4.0 : Ajout de routines, opération collective persistantes et communications partitionnés
- MPI-5.0 : Introduction dâune ABI pour rendre compatible plusieurs langages entre-eux.
Objectifs
Lâobjectif principal de la norme MPI est de parallĂ©liser la coĂ»t de la tĂąche entre plusieurs machines. Lâensemble de la librairie permet dâĂ©crire du code facilement parallĂ©lisable et permet in fine de rĂ©partir la charge de chaque processus.
MPI nâest pas OpenMP
Pour bien comprendre, MPI fait communiquer les machines entre elles, on parle de CPU pour chaque machine. En 1993, les processeurs Ă©taient pour la plus part monocĆurs, maintenant chaque micro-ordinateur possĂšde un processeur multicĆur. Câest pourquoi OpenMP a vu le jour, cette libraire de macros offre la possibilitĂ© de parallĂ©liser les tĂąches telle que les boucles entre les cĆurs dâune seule machine. LĂ oĂč MPI fait communiquer les machines, mais nâintervient pas sur lâusage distribuĂ© des cĆurs dâune machine.

Terminologie
On va maintenant détailler les différents composants du modÚle MPI.
Tout dâabord, concentrons-nous sur lâĂ©lĂ©ment central du modĂšle, le communicateur, câest lui qui permet de connecter les groupes de processus MPI, il les englobe afin de permettre la communication entre eux. Initialement on retrouve le communicateur MPI_COMM_WORLD qui englobent tout les processus existants, ces groupes peuvent ĂȘtre rĂ©organisĂ©s en plusieurs groupes via MPI_Comm_split. Le communicateur permet aussi dâidentifier chaque processus au sein de son groupe grĂące Ă un identificateur, un rang, une Ă©tiquette et une couleur, la couleur correspondant au groupe auquel le processus appartient (si deux processus ont la mĂȘme clĂ© alors ils sont identifiĂ©s via leur rang).
Le modĂšle MPI vise Ă ĂȘtre utilisĂ© au sein dâenvironnements hĂ©tĂ©rogĂšnes, câest Ă dire que chaque nĆud puisse ĂȘtre sur un systĂšme ou encore langage de programmation diffĂ©rents possĂ©dant potentiellement des types de donnĂ©es diffĂ©rentes. En dĂ©finissant leur propre types de donnĂ©es au sein des messages ils permettent une telle utilisation, on peut retrouver des types classiques tels que MPI_INT, MPI_CHAR, MPI_DOUBLE correspondant aux types int, char et double.
IntĂ©ressons nous dĂ©sormais aux messages transmis et les diffĂ©rents types de transfert existants. Tout dâabord voyons la structure dâun message, celui-ci est composĂ© dâune enveloppe avec le rang du processus Ă©metteur, la source du message, le rang du processus rĂ©cepteur, destination du message, lâĂ©tiquette du message, permet de transmettre un message seulement si lâĂ©tiquette match, et le communicateur qui gĂšre le groupe. Ensuite le message en lui-mĂȘme contient lâidentificateur du processus Ă©metteur de type de la donnĂ©e transmise, la longueur et lâidentificateur du processus rĂ©cepteur.
Maintenant comment ces messages sont-ils transférés au sein du modÚle.
Il existe deux types de transferts:
- Point Ă point : Transfert dâun processus Ă un autre au sein du mĂȘme groupe via des fonctions bloquantes (MPI_Send, MPI_Recv) ou non (MPI_Isend, MPI_Irecv) ou dâautres fonctions dâenvoi / rĂ©ception rĂ©pondant Ă des besoins spĂ©cifiques comme par exemple MPI_Rsend qui bloque tant que le message nâest pas copiĂ© dans un tampon
- Collectif : Transfert Ă de multiples processus destinations, tels que MPI_Bcast qui transmet Ă tout les autres processus du groupe, MPI_Reduce permettant de faire des opĂ©ration de rĂ©duction au sein dâun groupe (somme, produit, etc.), le rĂ©sultat est retourner au processus racine (la source). On retrouve aussi des opĂ©rations concernant la gestion distribuĂ©es de tableaux avec MPI_Scatter et MPI_Gather qui permettant respectivement de diviser un tableau en portions
Conclusion
MPI est toujours, aprĂšs les annĂ©es, un outil efficace et performant usitĂ© massivement dans les calculs scientifiques. Sa flexibilitĂ© et compatibilitĂ© sur les diffĂ©rents systĂšmes est une force majeure de cette norme informatique. Dans un monde oĂč la puissance de calcul est devenu cruciale notamment pour le dĂ©veloppement d'intelligences artificielles prĂ©cises, il est plus qu'obligatoire de disposer d'outils facilitant la parallĂ©lisation entre les machines et les langages (i.e. ABI).
N'hĂ©sitez pas Ă nous partager vos avis sur cette technologie đ
Alors, Team MPI, OpenMP ou les deux đ€
Références
- Open MPI - The Open MPI Project
- message passing interface (MPI) - TechTarget
- Notes OpenMP vs. MPI - Université de Lorraine
- MPI - Wikipédia
Auteurs
- CLEME Louis
- SIGNOURET Nathan
Congratulations @loumeni! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)
Your next target is to reach 50 upvotes.
You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOPCheck out our last posts:
!HUG
Your post has been manually reviewed for curation by the Principality of Bastion.
Ithara GaĂŻan
Principality of Bastion - Our Leit Motiv? Uniti Crescimus.
Principality's site | Ithara's Artist Page | Principality's Discord | Our Twitch Channel
You may TRAIL this account (or @hive-143869) if you like the curation we do, or join our discord to know more about what we do.
Hello ! Thanks for the manual reviews !
Avec plaisir, et mon bonjour Ă votre professeur :)
En espérant que vous continuiez à utiliser HIVE ...
Intéressant sur une techno que je connais pas trop.
Bon vendredi Ă vous deux.
!PIZZA
$PIZZA slices delivered:
@heroldius(3/10) tipped @loumeni
Please vote for pizza.witness!