代码之家  ›  专栏  ›  技术社区  ›  Fazeleh

在MPI中按列运行循环

  •  0
  • Fazeleh  · 技术社区  · 5 年前

    我希望每个秩都在一个循环上运行,并在循环中做一些事情,这个循环对我来说很重要,因为基于循环,我将遍历一个向量,每个秩需要基于向量做不同的事情。 简单的代码应该是:

    #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循环做了同样的事情,得到了同样的结果。

    0 回复  |  直到 5 年前
    推荐文章