私はSMPスーパーコンピューターでMPIプログラムを使用しています。たとえば、同じノード上のすべてのプロセスで等しく、ノードごとに異なる整数キーを設定することによって、どのプロセスが同じノードを共有しているかを特定したいと思います。目標は、このキーを使用してコミュニケーターを分割し、サブコミュニケーターが同じノード内のプロセスのみを収集するようにすることです。
したがって、関数は次のようになります
int identify_node(MPI_Comm* comm); // returns a key characterizing a node
node_1の0,1,2,3、node_2の4,5,6,7などの単純なプロセスの分散を想定すると、単純な式の問題ですが、想定せずに同じ結果を達成したいと思います。配布について。
私はMPI_Get_processor_nameを使用してそれを行う方法を知っています:名前のハッシュを計算し、2つの名前が同じハッシュを取得しないと仮定します(ある日、同じハッシュを持つ2つの名前がある場合、これは好きではありません問題を追跡するのが難しい)、またはプロセス間で何らかの合意アルゴリズムを使用する(どれですか?まだわかりません)。
それをどのように行いますか(可能であれば効率的に)?
マシュー