クラスターの各マシンで個別に集合通信を簡単に実行したい。それぞれに8コアのマシンが4台あるとすると、MPIプログラムは32個のMPIタスクを実行します。私が欲しいのは、与えられた関数についてです:
- 各ホストでは、1つのタスクのみが計算を実行し、他のタスクはこの計算中に何も実行しません。私の例では、4つのMPIタスクが計算を行い、他の28のタスクが待機しています。
- 計算が完了すると、それぞれの各MPIタスクは、ローカルタスク(同じホストで実行されているタスク)に対してのみ集合通信を実行します。
概念的には、ホストごとに1つのコミュニケーターを作成する必要があることを理解しています。私は周りを検索しましたが、それを明示的に行っているものは何も見つかりませんでした。私はMPIグループやコミュニケーターにあまり慣れていません。ここに私の2つの質問があります:
MPI_Get_processor_name
そのような振る舞いには十分にユニークですか?- より一般的には、それを行うコードがありますか?