我新的MPI和常常看到在MPI代码以下代码:
MPI等级确定
if (rank == 0) {
MPI_Send(buf, len, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
}
else {
MPI_Recv(buf, len, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status);
}
看来,秩确定该方法的发送和该方法的接收。但是 通过调用MPI_Comm_rank(MPI_COMM_WORLD, &rank);
确定进程的级别如何?
它与mpirun
的命令行参数有关吗?
例如:
mpirun -n 2 -host localhost1,localhost2 ./a.out
(localhost1
是等级0,localhost2
是1级?)
如何在程序将决定谁拥有等级0和谁拥有1级?
有没有一种方法可以让我指定某种东西,例如localhost1
正在发送,localhost2
正在接收?