Nejlepší odpověď
OpenMP je programovací platforma který umožňuje paralelizovat kód přes homogenní systém sdílené paměti (např. vícejádrový procesor). Například by bylo možné paralelizovat sadu operací přes vícejádrový procesor, kde jádra sdílejí paměť mezi sebou. Tato paměť zahrnuje mezipaměť, RAM, paměť pevného disku atd. A komunikace je snadná a relativně levná.
Otevřete MPI (na základě on Message Passing Interface ) je také programovací platforma, ale místo toho poskytuje možnost paralelizovat kód přes (ne) homogenní distribuovaný systém (např. superpočítač). Například je možné paralelizovat celý program přes síť počítačů nebo uzlů, které komunikují přes stejnou síť. Protože tyto uzly jsou v podstatě počítače , mají vlastní rozložení paměti a vlastní sadu jader (viz popis OpenMP). Komunikace mezi uzly ve srovnání se systémy sdílené paměti může být obtížná a obvykle nákladná.
Odpověď
OpenMP je rozšíření jazyka pro vyjádření datově paralelních operací (obvykle pole paralelizovaná přes smyčky). MPI je knihovna pro předávání zpráv mezi procesy shared-nothing.
OpenMP je vyšší úroveň abstrakce, protože jejím účelem je vystavit program souběžnosti a toku dat kompilátoru. Naproti tomu souběžnost MPI je implicitní (všechny procesy jsou paralelní) a zprávy vytvářejí strukturu datového toku výpočtu.
Ačkoli „Je běžné si myslet, že OpenMP je pouze o sdílené paměti, nic nebrání implementaci OpenMP v používání MPI k provozu napříč procesy a hostiteli. OTOH, dualita sdílené paměti a předávání zpráv znamená, že implementace MPI často využívají výhody sdílené paměti pro pozice ve stejném uzlu …