グループ番号にランク番号の一般化はありますか?私のコードでは、MPI :: COMM_WORLDの階層的分解を作成したいと思います。我々は16スレッドを使用すると仮定します。私はMPI :: COMM_WORLD.Splitを使ってそれぞれ4つのランクを持つ4つのコミュニケータを作成します。対応する4つのグループに固有のIDを提供するMPI関数がありますか?MPIグループへのMPIランク番号の一般化?
3
A
答えて
5
まだ、元のランクで各プロセスを参照できる場合は、MPI_COMM_WORLD
です。また、color
とkey
の引数をそれぞれMPI_Comm_split()
として、各プロセスが新しいコミュニケータで受け取るランクを完全に制御できます。これは、古いランクと新しいグループ/ランクとの間のマッピングを作成するのに十分な情報です。
1
@ suszterpattの答えが気に入らない場合は、常にデカルトコミュニケータを悪用し、コミュニケータのインデックス(2,3)のプロセスが階層分解のグループ2のプロセス3であるとふりまとうことができます。
しかし、これを読んで、私がそのような虐待を勧めているという印象を取り除くと、単なる考えです。
関連する問題
- 1. ソケット/ノードのMPIランク/プロセス番号を特定する方法
- 2. 一般的なMPIコード
- 3. MPIプロセスの同期化
- 4. Fortran MPIコードが同じユニット番号の別のファイルを開く
- 5. ifort mpi-openmpセグメント化エラー
- 6. MPIのランクとプロセスの違いは何ですか?
- 7. MPIプログラムのみがランク1のメッセージを取得する
- 8. C++プログラムへのMPIサポートの追加
- 9. C - MPI - アレイへのサブアレイの送受信
- 10. MPI - プロセスへのファイルパスの分散
- 11. MPIタグのセット
- 12. MPIのデッドロック
- 13. mpiプログラムのGUI
- 14. MPIコードのエラーチェック
- 15. MPIランクプロセス
- 16. MPI:ポインタ
- 17. MPIクイックソートプログラム
- 18. MPI - ロジックサークルサークル
- 19. MPI(Summation)
- 20. MPI BMP画像比較の効率化
- 21. mpiコミュニケータ間の一括操作
- 22. 一括関数でのMPIデッドロック
- 23. 一般的なグループ化
- 24. MPIマルチコアのマシン上
- 25. MPI-FORTRANのファイルIO
- 26. MPIチェックポイントの使用
- 27. MPIシグナルの処理
- 28. MPIの複数コミュニケータ
- 29. MPI-Ibcastの使用
- 30. ランク番号のリスト、ネクタイ
あなたが正しいです、私が 'MPI_Comm_split()'に追加した情報は、私が求めた情報を計算するのに十分です。しかし、コアの数が10.000の場合、それを行うことは自明ではありません。これが私がMPIの基盤上でこれを直接サポートするかどうかを尋ねた理由です。 –
私は十分にシンプルなようです。 N個のM個のプロセスをN個のM個のグループに分割したい場合、各プロセスは '' rank/N'色(オプションで '' rank%N''キー)で 'Split()'を呼び出します。これにより、グループ0にN. 1、グループ1にN。2 * N-1がランク付けされ、各グループ内のプロセスの元の順序が保持されます。グループ「j」におけるランク「i」を有するプロセスは、「MPI_COMM_WORLD」においてランク「j * N + i」を有するプロセスである。 – suszterpatt