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