đŸ•žïž Programmation distribuĂ©e - MPI (Message Passing Interface)​

in ULille blockchain ‱ 6 days ago

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.

MPI-structure-showing-processes-communicators-and-messagepassing-channels.png

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.

OpenMP-and-Message-Passing-Interface-MPI-Figure-1-explains-how-MPI-works-in-parallel.jpg

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

Auteurs

  • CLEME Louis
  • SIGNOURET Nathan
Sort:  

Congratulations @loumeni! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You distributed more than 10 upvotes.
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 STOP

Check out our last posts:

Our Hive Power Delegations to the November PUM Winners

!HUG
Your post has been manually reviewed for curation by the Principality of Bastion.

separator2.png

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!

$PIZZA slices delivered:
@heroldius(3/10) tipped @loumeni

Please vote for pizza.witness!