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 :
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.
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.
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:
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 đ€