我在多线程程序中有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从第一台机器获取数据,但没有数据,它被阻塞了。
有没有人有任何想法?我非常感谢它,因为我已经跟踪了两天的问题,但没有任何进展。