OpenMPとOpenMPIの違いは何ですか?


ベストアンサー

OpenMP はプログラミングプラットフォームですこれにより、同種の共有メモリシステム(マルチコアプロセッサなど)でコードを並列化できます。たとえば、コアが相互にメモリを共有するマルチコアプロセッサ上で一連の操作を並列化できます。このメモリには、キャッシュメモリ、RAM、ハードディスクメモリなどが含まれ、通信は簡単で比較的安価です。

Open MPI (ベースon Message Passing Interface )もプログラミングプラットフォームですが、代わりに(非)同種の分散システム(例:スーパーコンピューター)。たとえば、同じネットワークを介して通信するコンピュータまたはノードのネットワークを介して、プログラム全体を並列化することができます。これらのノードは本質的にコンピュータであるため、独自のメモリレイアウトと独自のコアセットがあります(OpenMPの説明を参照)。共有メモリシステムと比較した場合、ノード間の通信は困難であり、通常は費用がかかります。

回答

OpenMPは、データ並列操作(通常はループ上で並列化された配列)を表現するための言語拡張です。MPIは、何も共有されていないプロセス間でメッセージを渡すためのライブラリです。

OpenMPは高レベルです。その目的はプログラムの並行性とデータフローをコンパイラに公開することであるため、抽象化の目的です。対照的に、MPIの同時実行性は暗黙的であり(すべてのプロセスは並列です)、メッセージは計算のデータフロー構造を確立します。

ただし「OpenMPを共有メモリのみに関するものと考えるのが一般的です」OpenMP実装がMPIを使用してプロセスやホスト間で動作することを妨げるものは何もありません。 OTOH、共有メモリとメッセージパッシングの二重性は、MPI実装が同じノード上のランクに共有メモリを利用することが多いことを意味します…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です