Parallel processing MPI,如果使用非阻塞i_send或i_recv,如果在最后有等待,哪一个先去重要吗?

Parallel processing MPI,如果使用非阻塞i_send或i_recv,如果在最后有等待,哪一个先去重要吗?,parallel-processing,mpi,nonblocking,Parallel Processing,Mpi,Nonblocking,如果我调用MPI\u isend然后调用MPI\u irecv或者先执行irecv,然后执行isend,最后等待?什么顺序重要吗 如果我先MPI_isend,然后MPI_irecv,或者先执行irecv,然后执行isend,使用 等最后?什么顺序重要吗 和是非阻塞通信例程,因此需要使用(或用于测试请求的完成情况),以确保消息已完成,并且发送/接收缓冲区中的数据可以再次安全地操作 这里的非阻塞意味着不等待数据被读取和发送;相反,数据会立即被读取和发送。但这并不意味着数据会立即被发送。如果是,就不需

如果我调用
MPI\u isend
然后调用
MPI\u irecv
或者先执行irecv,然后执行isend,最后等待?什么顺序重要吗

如果我先MPI_isend,然后MPI_irecv,或者先执行irecv,然后执行isend,使用 等最后?什么顺序重要吗

和是非阻塞通信例程,因此需要使用(或用于测试请求的完成情况),以确保消息已完成,并且发送/接收缓冲区中的数据可以再次安全地操作

这里的非阻塞意味着不等待数据被读取和发送;相反,数据会立即被读取和发送。但这并不意味着数据会立即被发送。如果是,就不需要调用MPI_Wait

引用

如果愿意,您必须始终等待或测试非阻塞操作 您的程序必须符合标准,因此是可移植的最新版本 标准允许实现延迟实际数据 等待/测试呼叫前的传输。某些MPI操作(除 等待/测试)进行非阻塞操作,但不应依赖 这种行为

MPI_Isend不一定在后台进行,而只是 当MPI实现有机会进行时。 MPI_Wait将推进操作并保证其完成。一些 MPI实现可以使用 进程线程。有些人不能。它依赖于实现,并且 一个人永远不应该依赖于一种或另一种特定的行为