Interfície de Pas de Missatge (MPI)

MPI (Message Passing Interface) és un estàndard per programació paral·lela distribuïda que permet a processos comunicar-se mitjançant missatges, molt utilitzat en HPC.
Com s’implementa?
A Windows es pot usar MS-MPI amb Visual Studio: s’instal·len el runtime i l’SDK, es configuren les rutes d’Include i Lib, s’enllaça msmpi.lib i es pot escriure un programa en C++ amb les crides bàsiques (MPI_Init, MPI_Comm_rank, MPI_Comm_size, MPI_Finalize). Finalment, s’executa amb mpiexec -n <num_procs> programa.exe per llançar diversos processos en paral·lel.
Antecedents no MPI
La popularitat del PC clònic va portar a aquest computador a una evolució si més no sorprenent. Des de sempre s’havia intentat augmentar la seva capacitat afegint més processadors a la màquina però el resultat difícilment justificava la inversió. Els arquitectes buscaven d’altres camins per créixer però mai doblaven la velocitat o processaven prou en paral·lel. En lloc de posar varis nuclis es feien processadors més eficaços en sí mateixos afegint cues en les memòries cau “caché” amb l’inconvenient de trencar la linealitat de la cadena de codi. No es van notar grans canvis fins a l’aparició dels discs durs d’estat sòlid, una millora que demostrava que els esforços en processadors eren poc eficaços.

La solució ja es coneixia de feia temps amb el CM*. Coordinar diferents CM (mòduls computadors) en un mateix sistema requeria establir criteris comuns per a fer viable el trencament de la cadena de codi. Aquestes llargues cadenes en programes únics s’havien de convertir en fils curts fàcilment distribuïbles entre els processadors que quedaven lliures d’activitat.
Motivació pel MPI
Finalment, a 1993 es va assolir l’acord de cóm cal passar els resultats de la computació dels fils per que resultin coherents en el comput. Aquest acord seria la Interfície de Pas de Missatges (MPI), que perseguia que el “gang Scheduling” o Coordinació de blocs de processament no fos quelcom a decidir pel programador si no que fos automàtic.

Alternativa OpenMP
MPI va derivar en OpenMP, ja que si l’acord era per a unificar, el marquisme tornava a fer miques l’acord. Aquestes llibreries finalment obertes i normalitzades han sigut complements únics que les firmes de compilació han adoptat com a afegibles als seus programaris.
Així doncs, realment, per a poder aprofitar les arquitectures multi-nucli cal ser crítics amb l’elecció del compilador per a l’aplicació final i en el cas de comprar Software estar segurs que els seus programadors han fet servir les llibreries MPI o OpenMP.
Opinió personal
Per això, no és sorprenent, que la reutilització de programari antic no tingui millores significatives en els moderns processadors multi nucli, no són pas més ràpid doncs només utilitzen un únic nucli el qual no és especialment millor que en el passat.
Un repte a quest apunt està en construir un computador de format antic, de tipus 386/486, o fins i tot Z80 i crear un multi-nucli amb MPI com a mitjà de millora del sistema vintage.
