是否可以将源列表传递给 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 有其他约束迫使他们彼此同步(足够)......但这让我想知道是否有办法指定允许接收的proc列表。