Скажем, я запускаю параллельную программу, используя MPI.Команда выполнения
mpirun -n 8 -npernode 2 <prg>
запускает всего 8 процессов.Это 2 процесса на узел и всего 4 узла.(OpenMPI 1.5).Если узел содержит 1 ЦП (двухъядерный), а сетевое межсоединение между узлами - InfiniBand.
Теперь номер ранга (или номер процесса) можно определить с помощью
int myrank;
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
Это возвращаетчисло от 0 до 7.
Но, как я могу определить номер узла (в данном случае число от 0 до 3) и номер процесса внутри узла (число от 0 до 1)?