了解 MPI 发送差异
understanding MPI send differences
好吧,让我们开始吧,我脑子里有点混乱。
SEND:阻塞。发送方将等待接收方发布相应的 RECV。
SSEND:它是阻塞的,发送方不仅会等待接收方发布相应的 RECV,还会等待 RECV 的确认。这意味着 RECV 运行 很好。
BSEND:它是非阻塞的。该进程可以继续执行它的部分代码。数据存储在之前正确分配的缓冲区中。
ISEND:它是非阻塞的。该进程可以继续执行它的部分代码。数据未存储在缓冲区中:在确定 ISEND 运行 正常(等待/测试)之前,您不得覆盖正在发送的数据。
所以.. ISEND 和 BSEND 只是缓冲区不同吗?
是的——ISEND 和 BSEND 的区别在于缓冲区。
ISEND 是就地执行的非阻塞发送。
BSEND是非阻塞发送,可以缓存在MPI_Buffer_Attach
.
指定的一段内存中
创建 BSEND 函数是为了让程序员能够准确指定缓冲数据的位置。
重要的是要注意,与 ISEND 非常相似,您还必须使用 BSEND 缓冲区检查所有发送的状态以免缓冲区溢出或覆盖挂起的 BSEND。
好吧,让我们开始吧,我脑子里有点混乱。
SEND:阻塞。发送方将等待接收方发布相应的 RECV。
SSEND:它是阻塞的,发送方不仅会等待接收方发布相应的 RECV,还会等待 RECV 的确认。这意味着 RECV 运行 很好。
BSEND:它是非阻塞的。该进程可以继续执行它的部分代码。数据存储在之前正确分配的缓冲区中。
ISEND:它是非阻塞的。该进程可以继续执行它的部分代码。数据未存储在缓冲区中:在确定 ISEND 运行 正常(等待/测试)之前,您不得覆盖正在发送的数据。
所以.. ISEND 和 BSEND 只是缓冲区不同吗?
是的——ISEND 和 BSEND 的区别在于缓冲区。
ISEND 是就地执行的非阻塞发送。
BSEND是非阻塞发送,可以缓存在MPI_Buffer_Attach
.
创建 BSEND 函数是为了让程序员能够准确指定缓冲数据的位置。
重要的是要注意,与 ISEND 非常相似,您还必须使用 BSEND 缓冲区检查所有发送的状态以免缓冲区溢出或覆盖挂起的 BSEND。