1

スレッドのサポートがあることを指定した MPI プログラムで、すべてのスレッドが MPI::Bcast 呼び出しを行うかどうか疑問に思っていました (呼び出しでは、送信側プロセスが 1 つのスレッドしか所有していないことを確認してください)。他のスレッドまたは各プロセスの 1 つのスレッドのみ (最速)?

4

3 に答える 3

3

一般的な MPI 実装は、プロセス間の通信を扱います。スレッドをサポートする実装では、複数のスレッドが 1 つだけではなく、一部またはすべての MPI 呼び出しを実行できるようになっています。プロセス呼び出しのすべてのTスレッドは、MPI_Bcastプロセスが T 回呼び出したことを意味しMPI_Bcast、コミュニケーターの他のすべてのランクが同じことを行うことを期待しています。

于 2011-07-14T19:08:16.410 に答える
1

MPI の実装におけるスレッド サポートのレベルに応じて (MPI でのスレッド サポートは非​​常に大雑把であることを確認してください)、MPI 呼び出しはプロセスごとに 1 回だけ行われます。

于 2011-07-14T17:04:35.997 に答える
1

Novocrat の回答に追加するには:

MPI における計算の基本単位は「ランク」です。ほとんどの (すべて?) MPI の興味深い実装では、ランクはプロセスです。プロセス内のすべてのスレッドは、同じランク ID を共有します。

MPI 標準では、MPI_THREAD_SINGLE、MPI_THREAD_FUNNELED、MPI_THREAD_SERIALIZED、および MPI_THREAD_MULTIPLE の複数レベルのスレッド並列処理がサポートされています。

これらのうち、MPI_THREAD_MULTILE だけが実際に複数のスレッドで MPI ライブラリへの重複呼び出しを行っています。他の 3 つのケースは、Rank が「シングル スレッド」であるかのように処理できるというアプリケーションからのアサーションです。詳細については、MPI_INIT_THREAD の MPI 標準エントリを参照してください。

于 2011-11-28T16:39:09.070 に答える