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

在MPI中顺序运行for循环的某些部分

mpi c
  •  0
  • Fazeleh  · 技术社区  · 4 年前

    在我的程序中,我有一个协调员工作程序,它将运行在工作人员的中间,在MPI代码的中间,我需要一个for循环,在一个数组中迭代以获得输入,这个例程应该在这些新的输入上运行在每个工人上。我该怎么做?

    假设我有以下代码

    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);
    
      // do some stuff in parallel
      // .....
    
      for (j=0; j< n;j++) {
        a = array[j];
        COORDINATOR_WORKER_ROUTINE(a);
      }
    
      /* All done */
      MPI_Finalize();
      return 0;
    
    }
    

    这段代码是半代码,我想并行地向你们展示,我会做很多事情,同时我需要通过for循环来获得一些输入,带有新输入的例程应该由工作人员运行。但我不能完全像这样运行,因为我将有很多重复运行。 我想我必须以某种方式按顺序获得这些输入,但我不知道如何做到这一点。 你有什么建议?

    0 回复  |  直到 4 年前