1 / 17

MPI – Message Passing Interface

MPI – Message Passing Interface. utilizarea in construirea de aplicatii pentru Arhitecturi Paralele de Calcul. Prezentare MPI. specificatie de librarie pentru transmitere de mesaje; propusa ca standard de producatori si utilizatori;

valin
Download Presentation

MPI – Message Passing Interface

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MPI – Message Passing Interface utilizarea in construirea de aplicatii pentru Arhitecturi Paralele de Calcul Lucian Musat

  2. Prezentare MPI • specificatie de librarie pentru transmitere de mesaje; • propusa ca standard de producatori si utilizatori; • gandita sa ofere performanta mare pe masini paralele dar si in clustere;

  3. Dezvoltatori • Vendors - IBM, Intel, TMC, Meiko, Cray, Convex, Ncube • Library writers - PVM, p4, Zipcode, TCGMSG, Chameleon, Express, Linda • Application specialists and consultants • Companies: ARCO, Convex, Cray Research • Laboratories: ANL, GMD, NSF, etc • Universities: Yale, Cornell, Michigan State U.

  4. Implementari • MPICH – distributia portabila oficiala • MP-MPICH – bazata pe MPICH 1.1.2 pentru multi platforme • winmpich – implementare pentru Windows NT realizata de U. Statului Mississippi • WMPI II – versiune comerciala, implementare a MPI-2, in totalitate thread-safe*, dezvoltata pentru clustere HPC. * = o descriere a unui cod care este ori reentrant or protejat la executia simultana multipla printr-o modalitate de excludere mutuala.

  5. Scopuri • MPI este o librarie, un API, pentru scrierea de aplicatii nu a unui sistem de operare distribuit. Acest scop are impicatii in felul in care se face managementul resurselor. • MPI este modular pentru accelerarea dezvoltarii de librarii paralele portabile. Astfel, referintele sunt locale modulului. (Procesul sursa/destinatie se specifica ca rang in grup mai degraba decat printr-un identificator absolut) • MPI este extensibil. Are un stil orientat obiect. (Aceasta se poate vedea in cerinta functiilor de a manipula obiecte) • MPI suporta folosirea de tipuri de date diferite, eterogene.

  6. MPI-2 • Adaugiri la MPI-1.1 care nu schimba semnificativ tipurile de functionalitate (noi constructori de tipuri de date, schimb facil intre limbaje diferite, interoperabilitate, etc.). • Functionalitati noi (procese dinamice, comunicatie one-sided, parallel I/O, etc.) • Bindings* for Fortran 90 and C++. * binding = implementare a unei specificatii, limbaj, a constructiilor acestuia, in alt limbaj, alta forma, pastrand caracteristicile primului.

  7. MPICH • Implementare portabila pentru MPI • Suporta MPI-1 si MPI-2, prin versiunea MPICH2 • Se preteaza atat la supercalculatoare dar si la retele de calculatoare. • Portabilitatea si performanta se obtine implementand o Interfata de Device Abstracta (ADI). Este alcatuita din toate functiile MPI, implementate ca macrouri sau functii. MPICH contine multe implementari de ADI.

  8. Instalare • Descarcarea mpich.tar.gz sau mpich2-1.0.1.tar.gz de la referintele 3. sau 4. • Dezarhivarea cu tar xzvf <arhiva.tar.gz> • Creare director de instalare: /usr/local/mpich[2] • Rulare: ./configure –prefix=/usr/local/mpich[2] • Compilare: make • Instalare: make install (pentru MPICH2) • Setarea caii catre binarele mpich:export PATH=/usr/local/mpich[2]/bin:$PATH [2] = instalare MPICH in mpich, si MPICH2 in mpich2

  9. Configurare MPICH • Setarea fisierului cu masinile ce vor fi folosite

  10. Testare MPICH Folosind niste exemple din distributie: cd examples/basic make cpi mpirun -np 4 cpi

  11. Formatul functiilor MPI rc = MPI_Xxxxx(parameter, ... ) Exemplu: rc=MPI_Bsend( &buf, count, type, dest, tag, comm) Cod de eroare: Intors ca "rc". MPI_SUCCESS pentru succes

  12. Structura programului MPI MPI include file Initializarea mediului MPI Realizarea muncii cu apeluri de functii de transfer de mesaje Terminarea mediului MPI

  13. Comunicatori si grupuri • MPI foloseste obiecte numite comunicatori si grupuri pentru a defini ce colectii de procese pot comunica intre ele. Cele mai multe functii MPI necesita specificarea unui comunicator ca argument. • Pentru simplitate exista comunicatorul predefinit care include toate procesele MPI numit MPI_COMM_WORLD.

  14. Comunicatorul MPI_COMM_WORLD

  15. Rangul unui proces • Intr-un comunicator, fiecare proces are un identificator unic, rang. El are o valoare intreaga, unica in sistem, atribuita la initializarea mediului. • Utilizat pentru a specifica sursa si destinatia mesajelor. • De asemenea se foloseste pentru a controla executia programului (daca rank=0 fa ceva / daca rank=1 fa altceva).

  16. Program simplu MPI #include "mpi.h" #include <stdio.h> int main(int argc; char *argv[]) { int numtasks, rank, rc; rc = MPI_Init(&argc,&argv); if (rc != MPI_SUCCESS) { printf ("Error starting MPI program. Terminating.\n"); MPI_Abort(MPI_COMM_WORLD, rc); } MPI_Comm_size(MPI_COMM_WORLD,&numtasks); MPI_Comm_rank(MPI_COMM_WORLD,&rank); printf ("Number of tasks= %d My rank= %d\n", numtasks,rank); /******* do some work *******/ MPI_Finalize(); }

  17. Referinte • http://www-unix.mcs.anl.gov/mpi/ - situl oficial MPI • http://www.mpi-forum.org/docs/docs.html - documentele care descriu standardele MPI 1.0, 1.1, 1.2 si 2.0 • http://www-unix.mcs.anl.gov/mpi/mpich - situl MPICH • http://www-unix.mcs.anl.gov/mpi/mpich2 - situl MPICH2

More Related