Ich teste einen sehr grundlegenden MPI-Code:warum immer Rang 1 ist?
int main(int argc, char** argv){
MPI_Init(&argc, &argv);
int size, rank;
MPI_Status status;
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank == 0)
cout << "world size" << size << " my rank " << rank;
else
cout << rank << endl;
MPI_Finalize();
return 1;
}
Dieser Code druckt:
world size1324 my rank
0
, die in Ordnung ist.
Wenn ich den Code wie folgt ändern:
int main(int argc, char** argv){
MPI_Init(&argc, &argv);
int size, rank;
MPI_Status status;
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank == 0)
cout << "world size" << size << " my rank " << rank;
if(rank =! 0)
cout << rank << endl;
MPI_Finalize();
return 1;
}
Ausgang ist:
world size111
4
my rank
01
Ich betreibe den Code mit -np 4
Warum, im zweiten Ansatz, wird der Rang immer als 1 gedruckt?