[英]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.