マルチコアプロセッサをホストするいくつかのノードのクラスタでは、ノード間でMPIを使用する利点がありますとノード内のOpenMP/pthreadsは、pure all-MPIを使用していますか?私が正しく理解していれば、単一のノードでMPIプログラムを実行し、コア数に等しいプロセス数を示すと、別々のコアで実行されるいくつかのプロセスの正直な並列MPIジョブを実行します。では、ノード内のスレッドとノード間のMPIのみを使用したハイブリッド並列化についてはどうですか? MPIはGPUを使用できないため、MPI + CUDAハイブリッドの場合は疑問がありませんが、CPUコアを使用することができます。なぜスレッドを使用するのですか?MPI +スレッドの並列化とMPI専用の利点(ある場合)は何ですか?
0
A
答えて
4
OpenMP/pthreadスレッドとMPIプロセスの組み合わせを使用すると、ハイブリッドプログラミングと呼ばれます。純粋なMPIよりもプログラムの方が難しいですが、最近OpenMPでの待ち時間が短縮されているので、Hybrid MPIを使用するのは非常に意味があります。いくつかの利点があります:データ複製を回避
- :スレッドがノード内でデータを共有することができますので、任意のデータは、プロセス間で複製する必要が場合は、我々はこれを避けることができます。
- 軽量:スレッドは軽量であるため、プロセスに関連するメタデータが削減されます。
- メッセージ数の削減:ノード内の1つのプロセスは、他のプロセスと通信してノード間のメッセージ数を減らすことができるため、ネットワークインターフェイスカードの負荷を軽減できます。集合的コミュニケーションに関わるメッセージの数は注目に値する。
- 高速通信:上記の@ user3528438で指摘されているように、スレッドは共有メモリを使用して通信するため、ノード内でのポイントツーポイントMPI通信の使用を避けることができます。最近のアプローチ(2012年)では、ノード内のスレッドの代わりにRMA共有メモリを使用することを推奨しています。このモデルはMPI + MPI(MPI + MPIを使用してgoogle scholarを検索)と呼ばれています。
しかし、ハイブリッドMPIには欠点もありますが、利点についてのみ尋ねました。
プロセスよりもスレッド間でデータを共有する方が簡単で高速です。 – user3528438
それでは、並列タスク間の通信が集中的でない場合、MPI +スレッドは純粋なMPIよりも多くの利益をもたらさないでしょうか? – Maximko