发送多个mpi非阻塞发送-是否保留发送顺序
假设我有3个这样的非阻塞发送发送多个mpi非阻塞发送-是否保留发送顺序,mpi,Mpi,假设我有3个这样的非阻塞发送 MPI_Isend() MPI_Isend() MPI_Isend() 以及相应的3个接收 MPI_Recv() MPI_Recv() MPI_Recv() 现在假设第二个Isend不发送,因为它是非阻塞的,第三个Isend将被发送。现在,MPI_Recv功能是否会得到预期的功能 我的意思是,第一次MPI发送会将数据发送到第一次接收,第二次MPI发送到第二次MPI接收,依此类推。更新了:我认为下面的Jeremiah Willcock评论是正确的,而这个答案是错误的
如果要确保第一个MPI_Recv接收特定消息,应使用标记来区分各种消息,并让receive指定该标记 这是不正确的——参见MPI 2.2规范中关于不超车的第3.5节;上面的代码需要按照发送发生的相同顺序匹配接收。但是,这只适用于发送具有相同的通信器和标记的情况。伙计,这就是我在回答的第二段中所说的。你的回答不是说发送可以被任何一个接收接收到吗?是的,除非你想用标记来区分它们。或者,就这一点而言,是传播者。但是MPI的新手几乎从来没有仔细使用过标签,OP也从来没有在帖子的任何地方提到过它们。除了这个问题所建议的是完全安全和定义良好的,即使没有标签。