我希望每个秩都在一个循环上运行,并在循环中做一些事情,这个循环对我来说很重要,因为基于循环,我将遍历一个向量,每个秩需要基于向量做不同的事情。
简单的代码应该是:
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
// MPI Start
MPI_Init(NULL, NULL);
int pCurrentID, pRightID, pLeftID, tag = 1 , size, value;
MPI_Comm_rank(MPI_COMM_WORLD, &pCurrentID);
MPI_Comm_size(MPI_COMM_WORLD, &size);
while (c == false ) {
// do some stuff
for (int J=0; J<2; J++) {
std::cout<<"rank "<<pCurrentID<<" J "<<J<<std::endl;
}
// do some stuff and calculate C
}
/* All done */
MPI_Finalize();
return 0;
}
当我打印矢量时,它的大小是2。但我得到了以下成本结果:
rank 2 J 0
rank 0 J 0
rank 1 J 0
rank 0 J 0
rank 2 J 0
rank 1 J 0
为什么每个等级都没有通过循环?我对while循环做了同样的事情,得到了同样的结果。