Paras vastaus
OpenMP on ohjelmointialusta jonka avulla koodi voidaan rinnastaa homogeeniseen jaettuun muistijärjestelmään (esim. moniytimiseen prosessoriin). Esimerkiksi voitaisiin rinnastaa joukko toimintoja moniytimisen prosessorin yli, jossa ytimet jakavat muistia keskenään. Tämä muisti sisältää välimuistin, RAM-muistin, kiintolevymuistin jne., Ja tiedonsiirto on helppoa ja suhteellisen halpaa.
Avaa MPI (perustuu Viestien välitysrajapinta ) on myös ohjelmointialusta, mutta tarjoaa sen sijaan kyvyn rinnastaa koodi (ei) homogeeniseen hajautettu järjestelmä (esim. supertietokone). Esimerkiksi koko ohjelma voidaan rinnastaa tietokoneverkkoon tai solmuihin, jotka kommunikoivat saman verkon kautta. Koska nämä solmut ovat olennaisesti tietokoneita , heillä on oma muistiasettelu ja oma joukko ytimiä (katso OpenMP-kuvaus). Solmujen välinen viestintä voi olla vaikeaa ja yleensä kallista verrattuna jaettuihin muistijärjestelmiin.
Vastaus
OpenMP on kielilaajennus tietojen rinnakkaisten operaatioiden ilmaisemiseen (yleisesti matriisit, jotka on rinnastettu silmukoiden yli). MPI on kirjasto viestien välittämiseen jaettujen ei-prosessien välillä.
OpenMP on korkeamman tason abstraktion, koska sen tarkoituksena on paljastaa kääntäjälle ohjelman samanaikaisuus ja tietovirta. Sitä vastoin MPI-samanaikaisuus on implisiittistä (kaikki prosessit ovat rinnakkaisia), ja -viestit muodostavat laskennan tietovirran.
Vaikka se ”On yleistä ajatella OpenMP: n olevan vain jaettua muistia, mikään ei estä OpenMP – toteutusta käyttämästä MPI: tä toimiakseen prosessien ja isäntien välillä. OTOH, jaetun muistin ja viestien välityksen kaksinaisuus tarkoittaa, että MPI-toteutukset hyödyntävät usein jaettua muistia saman solmun riveissä …