b'\n_START_ARTICLE_\nMessage Passing Interface\n_START_SECTION_\nHist\xc3\xb2ria\n_START_PARAGRAPH_\nLa\xc2\xa0estandarditzaci\xc3\xb3\xc2\xa0de la\xc2\xa0interf\xc3\xadcie\xc2\xa0de pas\xc2\xa0missatges\xc2\xa0va comen\xc3\xa7ar-se a desenvolupar\xc2\xa0gr\xc3\xa0cies\xc2\xa0al patrocini del Centre d\'Investigaci\xc3\xb3\xc2\xa0en\xc2\xa0Computaci\xc3\xb3\xc2\xa0Paral\xc2\xb7lela\xc2\xa0de\xc2\xa0Williamsburg,\xc2\xa0Virg\xc3\xadnia, Estats Units (Abril 29-30 de 1992). Va sorgir la primera versi\xc3\xb3 preliminar, anomenada\xc2\xa0MPI1, que\xc2\xa0estava\xc2\xa0principalment enfocada a les comunicacions Punt-A-Punt, sense incloure rutines de\xc2\xa0comunicaci\xc3\xb3\xc2\xa0col\xc2\xb7lectiva. L\'est\xc3\xa0ndard\xc2\xa0final va ser presentat a la\xc2\xa0conferencia\xc2\xa0de\xc2\xa0Supercomputaci\xc3\xb3\xc2\xa0al 1993._NEWLINE_A causa de\xc2\xa0la utilitat i potencial d\'aquest projecte, es va continuar actualitzant aquest\xc2\xa0est\xc3\xa0ndard\xc2\xa0de\xc2\xa0comunicaci\xc3\xb3. D\'aquesta manera, al 1994 es va\xc2\xa0publicar\xc2\xa0el\xc2\xa0MPI-1 i,\xc2\xa0al 1997, el\xc2\xa0MPI-2, (entre aquestes dues versions nom\xc3\xa9s va haver-hi correccions i aclariments). La versi\xc3\xb3 MPI-2 va comportar noves funcionalitats referents a la creaci\xc3\xb3 i manteniment dels processos, un nou tipus de comunicaci\xc3\xb3 (comunicaci\xc3\xb3 a una banda, tamb\xc3\xa9 denominada RMA de l\'angl\xc3\xa9s Remote Memory Access), comunicacions col\xc2\xb7lectives ampliades, interf\xc3\xadcies externes i entrada/sortida paral\xc2\xb7lels (I/O). Las posteriors versions d\'MPI, que van ser la 2.1 i la 2.2, nom\xc3\xa9s van comportar canvis menors i petites correccions._NEWLINE_A l\'any 2012 sorg\xc3\xad la versio MPI-3, que va comportar canvis significatius a l\'est\xc3\xa0ndard d\'MPI, com per exemple la comunicaci\xc3\xb3 col\xc2\xb7lectiva no bloquejant, noves operacions de comunicaci\xc3\xb3 a una banda, nous vincles amb el llenguatje Fortran 2008, entre d\'altres. La versi\xc3\xb3 MPI-3.1 va introduir tamb\xc3\xa9 operacions d\'entrada-sortida col\xc2\xb7lectives no bloquejants._NEWLINE_Actualment s\'est\xc3\xa0 desenvolupant  la versi\xc3\xb3 MPI-4.0, on s\'est\xc3\xa0 treballant en aspectes com noves extensions per un millor suport a models de programaci\xc3\xb3 h\xc3\xadbrida, suport per la toler\xc3\xa0ncia a fallades en aplicacions MPI, funcions col\xc2\xb7lectives persistents i comunicaci\xc3\xb3 a una banda.\n_START_SECTION_\nConceptes\n_START_PARAGRAPH_\nMPI\xc2\xa0ofereix una extensa gamma d\'habilitats. Els seg\xc3\xbcents conceptes ajuden a la comprensi\xc3\xb3 i proporcionen un context per a totes aquestes habilitats, ajudant al programador per decidir\xc2\xa0quina\xc2\xa0funcionalitat utilitzar en els seus programes.\n_START_SECTION_\nHello World Exemple\n_START_PARAGRAPH_\n#include <assert.h>#include <stdio.h>#include <string.h>#include <mpi.h>int main(int argc, char **argv){_NEWLINE_    char nom[256];_NEWLINE_    int rank, nombre_processos,etiqueta=999;_NEWLINE_    // Inicialitza la infraestructura per la comunicaci\xc3\xb3 _NEWLINE_    MPI_Init(&argc, &argv);_NEWLINE_    _NEWLINE_    // Identifica aquest proc\xc3\xa9s_NEWLINE_    MPI_Comm_rank(MPI_COMM_WORLD, &rank);_NEWLINE_    // Identifica el total de processos que hi ha actualment_NEWLINE_    MPI_Comm_size(MPI_COMM_WORLD, &nombre_processos);_NEWLINE_    _NEWLINE__NEWLINE_// El primer proc\xc3\xa8s rep dels altres processos un missatge i ho imprimeix per pantalla_NEWLINE_    if (rank == 0 )_NEWLINE_    {_NEWLINE_      MPI_STATUS estat;_NEWLINE_      _NEWLINE_      for (int origen=1; origen < nombre_processos;origen++)_NEWLINE_      {_NEWLINE_        MPI_RECV(nom,sizeof(nom),MPI_CHAR,origen,etiqueta,MPI_COMM_WORLD,&status);_NEWLINE_        printf(" Missatge des del proc\xc3\xa9s %d de un total de %d processos \\n ",origen,mida);_NEWLINE_      }_NEWLINE_    }_NEWLINE_    else // els altres processos envia un missatge _NEWLINE_    {_NEWLINE_        int desti = 0; _NEWLINE_        MPI_SEND(nom,sizeof(nom),MPI_CHAR,desti,etiqueta,MPI_COMM_WORLD);_NEWLINE_    }_NEWLINE__NEWLINE_   // Finalitza la infraestructura de comunicaci\xc3\xb3_NEWLINE_   MPI_Finalize();_NEWLINE_   return 0;}'