Fra*_*coN 5 parallel-processing mpi
好的,让我们开始吧,我脑子里有点混乱。
SEND:它正在阻塞。发送方将等待,直到接收方发布相应的 RECV。
SSEND:它是阻塞的,发送方不仅会等待接收方发布相应的 RECV,还会等待 RECV 的确认。这意味着 RECV 运行良好。
BSEND:它是非阻塞的。该进程可以继续执行其部分代码。数据存储在之前正确分配的缓冲区中。
ISEND:它是非阻塞的。该进程可以继续执行其部分代码。数据未存储在缓冲区中:在确定 ISEND 运行良好(WAIT/TEST)之前,您不得覆盖正在发送的数据。
那么.. ISEND 和 BSEND 仅在缓冲区上有所不同吗?
小智 5
是的——ISEND和BSEND之间的区别在于缓冲区。
ISEND是就地执行的非阻塞发送。
BSEND是非阻塞发送,可以缓冲在 指定的内存段中MPI_Buffer_Attach。
创建BSEND函数是为了允许程序员准确指定数据缓冲的位置。
需要注意的是,与ISEND非常相似,您还必须使用BSEND缓冲区检查所有发送的状态,以免缓冲区溢出或覆盖挂起的BSEND。