使用MPI_Isend实现并行通信?

在我的实验中,我发现MPI通讯时间非常长,甚至超过了计算时间。 我找到了解决此问题的方法,例如重叠的计算操作和通信操作。 同时,我发现了MPI_Isend函数。它是一种无阻塞通信功能。所以我想知道是否可以使用MPI_Isend进行并行通信。

具体示例如下:

进程1需要将不同的数据传输到其他4个进程。

换句话说,发送的数据是不同的,接受的过程是不同的,并且它们之间没有干扰。

因此,我在想,我可以使用4个非阻塞通信函数,例如MPI_Isend,因为该通信函数是非阻塞的,所以在调用该函数后,它将立即返回,以便调用下一个功能。

我想用这种方法来实现4数据并行传输。

代码如下:

MPI_Isend(&buffertop_to_bot[1][1][1],NX*NZ*nf2,MPI_FLOAT,INDEX[3],TAG5,MPI_COMM_WORLD,&request);
MPI_Isend(&bufferbot_to_top[1][1][1],NX*NZ*nf1,INDEX[4],TAG6,&request);
MPI_Isend(&bufferlef_to_rig[1][1][1],NY*NZ*nf2,INDEX[1],TAG1,&request);
MPI_Isend(&bufferrig_to_lef[1][1][1],NY*NZ*nf1,INDEX[2],TAG2,&request);
MPI_Wait(&request,&status);

这种方法可以实现我的目标吗?

能给我一些建议或相关论文吗?或其他解决通信时间长的方法。

感谢您阅读。

我是新手,以上描述由Google翻译

aabb5888157 回答:使用MPI_Isend实现并行通信?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3090698.html

大家都在问