是否可以将源列表传递给MPI_Recv(或等效的)调用?目前,我的代码看起来像:

do i=nod1,nod2
    call mpi_recv(tmp,n,MPI_REAL,MPI_ANY_SOURCE,tag,MPI_COMM_WORLD,status,ierr)
    ... do stuff with tmp here
    call mpi_send(tmp,n,MPI_REAL,status(MPI_SOURCE),tag,MPI_COMM_WORLD,ierr)
enddo

当然,这不能保证它能满足我的要求。(如果nod1在nod2可以发送一条消息之前在此发送了两条消息,则nod2的消息在此迭代期间未被接收,这将是不好的。)在我的应用程序中,这是不可能发生的,因为nod1和nod2具有其他约束,这些约束将强制它们彼此同步(足够多)。。。但这让我想知道是否有办法指定允许接收的进程列表。

最佳答案

不是这样的。但是,可以将MPI_Probe()MPI_ANY_SOURCE一起使用,然后将MPI_SOURCE对象的status字段与要接收的进程列表进行比较。如果存在匹配项,则可以使用常规阻塞接收从该源进行接收。

关于c - MPI_Recv带有来源列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10194197/

10-16 12:21
查看更多