繁体   English   中英

MPI多个循环发送和接收

[英]MPI multiple send and receive in loop

我的代码甚至在概念上都有很大的问题。 我需要做的是在两个不同的功能中完成工作。 一个函数只有一个实例及其主线程,第二个函数在许多其他节点上具有很多实例。

我的一个功能(功能A)正在将3部分数据发送到所有节点,而另一个功能B应该在每个节点上接收数据。 接下来,函数A应该等待结果。 当它们准备就绪时,每个节点中的功能B都应将一部分数据发送给功能A,然后全部重新开始。

它的工作方式应类似于以下示例代码:

void prepareData() { //function A
  for(int i = 1 ; i < threads;i++) {
    MPI_Send(...); //first part of data
    MPI_Send(...); //second part of data
    MPI_Send(...); //third part of dat
  }
  //Here this function (A) should wait because second function (B) is computing data
  for(int i=1;i<threads;i++) {
    MPI_Recv(...); //receiving data from function B
  }
}

void computeData() { //function B
  while(isDone) {
    MPI_Recv(...); //first part of data
    MPI_Recv(...); //second part of data
    MPI_Recv(...); //third part of data
  //Here all this data are computed and then sending to main function
    MPI_Send(...); //sending data to function A
 }
}

有谁知道该怎么做以及应该使用哪个MPI函数以及如何使用?

那么,当您尝试描述的方法时会发生什么?

您是否真的在这里使用线程,还是将线程编程与消息传递相结合? 惯用MPI更像

for(int i = 1 ; i < nprocs;i++) {
...
}

SEND可能会阻止,因此您可能应该使用ISEND并测试/等待完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM