Care este diferența dintre OpenMP și Open MPI?


Cel mai bun răspuns

OpenMP este o platformă de programare care permite paralelizarea codului pe un sistem de memorie partajat omogen (de exemplu, un procesor multi-core). De exemplu, s-ar putea paralela un set de operații pe un procesor multi-core în care nucleele partajează memoria între ele. Această memorie include memorie cache, memorie RAM, hard disk etc., iar comunicarea este ușoară și relativ ieftină.

Open MPI (bazat pe pe Message Passing Interface ) este, de asemenea, o platformă de programare, dar oferă în schimb posibilitatea de a paralela codul peste un (ne) omogen sistem distribuit (de exemplu, un supercomputer). De exemplu, este posibil să se paralelizeze un întreg program printr-o rețea de computere sau noduri, care comunică prin aceeași rețea. Deoarece aceste noduri sunt în esență computere , au propriul aspect de memorie și propriul set de nuclee (vezi descrierea OpenMP). Comunicarea între noduri, în comparație cu sistemele de memorie partajată, poate fi dificilă și este de obicei costisitoare.

Răspuns

OpenMP este o extensie de limbaj pentru exprimarea operațiunilor paralele de date (în mod obișnuit matrice paralelizate peste bucle). MPI este o bibliotecă pentru transmiterea mesajelor între procesele partajate nimic.

OpenMP este un nivel superior de abstractizare, deoarece scopul său este de a expune simultanul programului și fluxul de date compilatorului. În schimb, concurența MPI este implicită (toate procesele sunt paralele), iar mesajele stabilesc structura fluxului de date al calculului.

Deși „Este obișnuit să ne gândim la OpenMP ca fiind doar despre memoria partajată, nimic nu împiedică o implementare OpenMP să utilizeze MPI pentru a opera în procese și gazde. OTOH, dualitatea memoriei partajate și transmiterea mesajelor înseamnă că implementările MPI profită adesea de memoria partajată pentru rangurile de pe același nod …

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *