我原先以为只有在MPI代码区域,即MPI_Init(&argc, &argv);到MPI_Finalize();中的代码才会涉及到进程通信的问题,但实际上在MPI区域外的代码依然受到影响,执行的次数与开启的进程数有关,为此可以使用MPI 秩(rank)的唯一性,控制函数的执行次数。
#include<iostream>
#include<mpi.h>
using namespace std;
int main(int argc, char* argv[]) {
cout << "Hello!" << endl; //调用 mpiexec -n(次)
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank == 1) {
cout << "Hello Paral!" << endl; //调用一次
}
MPI_Finalize();
return 0;
}