を呼び出します1つのスレッド)、これは他のすべてのスレッドによって受信されるか、または各プロセスからの1つのスレッド(最速)で受信されますか?スレッドをサポートしてMPIとBCASTは、あなたがスレッドのサポートがあることを指定するMPIプログラムでは、すべてのスレッドが呼び出しで、送信者のプロセスのみが所有しているMPI :: BCASTコール(作るSHUREを作る場合、私は思っていた
1
A
答えて
3
一般的なMPI実装は、プロセス間の通信を処理します。スレッドをサポートしている実装は、複数スレッドが単なるMPI呼び出しではなく、MPI呼び出しの一部またはすべてを作成することを許可します。 MPI_Bcast
を呼び出すプロセス内のT
スレッドのすべては、プロセスがMPI_Bcast
をT回呼び出すことを意味し、コミュニケータの他のすべてのランクは同じことを行うと予測します。 Novelocratによって与えられた答えに追加するには
1
はMPIの実装では、スレッドのサポートのレベルに応じて、MPI呼び出しが唯一のプロセスごとに一度行われている(非常に不完全であるMPIでのサポートをスレッド、チェックしてください)。
1
:「ランク」MPIにおける計算の基本的な単位がある
MPIのほとんどの(すべての)興味深い実装では、ランクはプロセスです。プロセス内のすべてのスレッドは同じランクIDを共有します。
MPI標準では、MPI_THREAD_SINGLE、MPI_THREAD_FUNNELED、MPI_THREAD_SERIALIZED、およびMPI_THREAD_MULTIPLEという複数レベルのスレッド並列処理がサポートされています。これらのうち
、唯一MPI_THREAD_MULTILEは、実際にMPIライブラリへの呼び出しが重複する複数のスレッドを持っています。他の3つのケースは、ランクを「シングルスレッド」として扱うことができるというアプリケーションからのアサーションです。詳細についてはMPI Standard entry on MPI_INIT_THREADをご覧ください。
関連する問題
- 1. 複数のプロセスを使用している場合、MPI Bcast付近のSegフォールト
- 2. 他のスレッドが所有しているため、呼び出しスレッドはこのオブジェクトにアクセスできません。
- 3. MPI +スレッドの並列化とMPI専用の利点(ある場合)は何ですか?
- 4. 呼び出し元のスレッドがオブジェクトを作成したスレッドでない場合は例外をスローする
- 5. std :: asyncで作成したスレッドを使用してMPIのスレッドセーフを送信する
- 6. java.lang.RuntimeException:私はエラーが... Looper.prepare(呼び出されていないスレッド内のハンドラを作成することはできません取得していたスレッド
- 7. semop()はerrnoで失敗しました。4.プロセス内でスレッドsemop()がスレッドのレースをサポートしていますか?
- 8. 私のMPIプログラムが送信するデータの量を測定する方法は?
- 9. Python MPIが通信中のプロセスを待っています
- 10. PBSを使用して外部MPIプログラムを呼び出す並列Pythonスレッドを実行する
- 11. コアよりスレッドが多い場合は、どのようにしてMPIをすべてのコアで実行しないようにしますか?
- 12. すべてのスレッドが終了した後にC#プロセスが残っている
- 13. MPI - 私が直面した問題は、ここで解決されている
- 14. 動作していないMPIをデバッグする方法は?
- 15. MPI:1つのMPIプロセスでプロセッサーが100%にならない
- 16. スレッドがプロセスと共有していないことは何ですか?
- 17. すでにモニターをacquieredスレッドでThrea.Sleepへの呼び出しは、寝る前にロックを解除する場合は、私が思っていた.NET
- 18. C++でMPIを実行しているときに関数を呼び出す
- 19. スレッドでTextViewを作成するには?私は、スレッドの中のTextViewを作成する方法を知っていただきたいと思い
- 20. スレッドをサポートしていないオペレーティングシステムはありますか?
- 21. InvalidOperationException:呼び出し元のスレッドは、別のスレッドがそのオブジェクトを所有しているため、このオブジェクトにアクセスできません。
- 22. MPIは、私は2つのプロセッサがあると
- 23. 私は大きなプロジェクトの一環として、次の作業CMakeList.txtを持っているMPIとMPE
- 24. 別のスレッドがそれを所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません
- 25. WPF:別のスレッドがそれを所有しているため、呼び出し元スレッドはこのオブジェクトにアクセスできません
- 26. Javaのスレッドが実行されていて、スレッドの参照を所有していない場合、スレッドはガーベッジ・コレクションを受け取りますか
- 27. は、私はすべてが私はこのような私の同期ポリシーを作成したいグローバル変数Xをアクセスするいくつかの変更スレッドと一部の読み取りスレッドを、持っているスレッド同期
- 28. MPIでサポートされている最速の遺伝アルゴリズムC++ライブラリ
- 29. 複数のスレッドを持つMPI
- 30. MPIデカルトトポロジ:MPI_Neighbor_alltoallが間違ったデータを送信します
Novelocrat、これは意味があります。だから、Basterを呼び出す別のプロセスからのすべてのスレッドを持つことは大きな災害です。答えをありがとう。 – SwatchPuppy
Novelocrat、もう一つの質問があります。複数スレッドのサポートを有効にした場合、同じプロセスに2つのスレッドがあり、MPI_SendとMPI_Recvを使ってそれらの間で通信できるか、デッドロックになりますか? – SwatchPuppy
プロセスは、おそらくIsend/Irecvを使って自分自身と通信することができますが、それはやや愚かです。プロセス内のすべてのスレッドは、依然として同じMPIランクの一部であることを覚えておいてください。また、 'MPI_Send'は、一致する受信が完了するまでブロックすることができます。それがそれ自身であり、受信が掲示されていなければ、それはデッドロックです。 – Novelocrat