我在多线程程序中有MPI_Isend/MPI_Recv 问题。
在程序中:
第一台机器有一个线程进行一些计算并调用MPI_Isend
以将缓冲区发送到第二台机器,而另一个线程总是试图MPI_Recv
从第二台机器获取数据。第一个线程将在再次调用之前MPI_Wait
最后MPI_Isend
完成MPI_Isend
。
第二台机器做同样的事情。
然后我得到的结果是:
第一台机器:
线程0:MPI_Isend
数据成功到第二台机器。但MPI_Wait
因为最后MPI_Isend
没有完成而被阻止。
线程1:尝试MPI_Recv
从第二台机器获取数据,但没有数据,它被阻塞了。
第二台机器:
线程0 :MPI_Isend
数据到第一台机器成功。但MPI_Wait
因为最后MPI_Isend
没有完成而被阻止。
线程1:尝试MPI_Recv
从第一台机器获取数据,但没有数据,它被阻塞了。
有没有人有任何想法?我非常感谢它,因为我已经跟踪了两天的问题,但没有任何进展。