たとえば、MPIを使用して並列プログラムを実行します。実行コマンド
mpirun -n 8 -npernode 2 <prg>
合計8つのプロセスを起動します。つまり、ノードごとに2つのプロセス、合計で4つのノードです。(OpenMPI 1.5)。ノードが1つのCPU(デュアルコア)で構成され、ノード間のネットワーク相互接続がInfiniBandである場合。
これで、ランク番号(またはプロセス番号)を次のように決定できます。
int myrank;
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
これにより、0から7までの数値が返されます。
しかし、ノード番号(この場合は0から3の間の番号)とノード内のプロセス番号(0から1の間の番号)をどのように決定できますか?