Vad är skillnaden mellan OpenMP och Open MPI?


Bästa svaret

OpenMP är en programmeringsplattform som gör att man kan parallellisera koden över ett homogent delat minnessystem (t.ex. en flerkärnig processor). Till exempel kan man parallellisera en uppsättning operationer över en flerkärnig processor där kärnorna delar minne mellan varandra. Detta minne innehåller cacheminne, RAM, hårddiskminne etc. och kommunikationen är enkel och relativt billig.

Öppna MPI (baserat på Message Passing Interface ) är också en programmeringsplattform, men ger istället en möjlighet att parallellisera koden över en (icke-) homogen distribuerat system (t.ex. en superdator). Det är till exempel möjligt att parallellisera ett helt program över ett nätverk av datorer eller noder som kommunicerar över samma nätverk. Eftersom dessa noder i huvudsak är datorer , de har sin egen minneslayout och sin egen uppsättning kärnor (se OpenMP-beskrivning). Kommunikation mellan noder, jämfört med delade minnessystem, kan vara svår och är vanligtvis dyr.

Svar

OpenMP är en språkutvidgning för att uttrycka dataparallella operationer (vanligtvis arrays som är parallelliserade över slingor). MPI är ett bibliotek för meddelandeöverföring mellan delade-ingenting-processer.

OpenMP är en högre nivå av abstraktion, eftersom dess syfte är att exponera programmets samtidighet och dataflöde för kompilatorn. MPI-samtidighet är däremot implicit (alla processer är parallella) och -meddelanden fastställer dataflödesstrukturen för beräkningen.

Även om den ”vanligt att tänka på OpenMP som bara handlar om delat minne, det finns inget som hindrar en OpenMP-implementering från att använda MPI för att fungera över processer och värdar. OTOH, dualiteten av delat minne och meddelandeöverföring innebär att MPI-implementeringar ofta utnyttjar delat minne för rankningar på samma nod …

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *