好的,让我们开始吧,我脑子里有点混乱。
发送:它正在阻止。发送方将等待接收方发布相应的RECV。
SSEND :它正在阻止,发送方不会等待接收方发布相应的RECV,但它会等待RECV的确认。这意味着RECV运行良好。
BSEND :它是非阻止的。该过程可以继续执行其部分代码。数据存储在之前正确分配的缓冲区中。
ISEND :它是非阻止的。该过程可以继续执行其部分代码。数据不存储在缓冲区中:在确定ISEND运行正常(WAIT / TEST)之前,不得覆盖正在发送的数据。
那么...... ISEND和BSEND只对缓冲区有所不同吗?
答案 0 :(得分:2)
是 - ISEND 和 BSEND 之间的区别是缓冲区。
ISEND 是一种就地执行的非阻止发送。
BSEND 是一种非阻塞发送,可以在MPI_Buffer_Attach
指定的内存段中进行缓冲。
创建了 BSEND 函数,以允许程序员准确指定缓冲数据的位置。
请务必注意,与 ISEND 非常相似,您还必须使用 BSEND 缓冲区检查所有发送的状态,以免溢出缓冲区或覆盖待处理的 BSEND 。