gpt4 book ai didi

mpi - isend 和 issend 和有什么不一样?

转载 作者:行者123 更新时间:2023-12-03 20:25:24 28 4
gpt4 key购买 nike

需要澄清我对 Send Types 中给出的 isend 和 issend 的理解

我的理解是,一旦发送缓冲区空闲,即当所有数据都被释放时,isend 将返回。另一方面,Issend 仅在它从获取/未获取整个数据的接收中收到 ack 时返回。这就是全部吗?

最佳答案

两者 MPI_Isend()MPI_Issend()立即返回,但在这两种情况下都不能立即使用发送缓冲区。

想想MPI_Send()之间的区别和 MPI_Ssend() :

  • MPI_Send()可以缓冲,或者如果缓冲区太大,它可以是同步的
    大到本地缓冲,在这种情况下,它等待完成发送
    数据到相应的接收操作。
  • MPI_Ssend()总是同步的:它总是等待完成发送数据
    到相应的接收操作。

  • 对应的“I”操作的内部工作非常相似,除了它们都不会阻塞(立即返回):区别仅在于当 MPI 库向用户程序发出信号时,您可以使用发送-buffer(即: MPI_Wait() 返回或 MPI_Test() 返回 true - 所谓的非阻塞发送的发送完成操作):
  • MPI_Isend()这可能发生在数据被本地复制到 MPI 库拥有的缓冲区中时,如果低于“同步阈值”,或者当数据实际移动到同级任务时:发送完成操作可以是本地的,如果底层发送操作被缓冲。
  • MPI_Issend() MPI 永远不会在本地缓冲数据,并且仅在数据实际传输(并且可能在低级别确认)后才返回“无缓冲条件”:发送完成操作是非本地的。

  • MPI standard document在这些方面相当迂腐。参见第 3.7 节无阻塞通信。

    关于mpi - isend 和 issend 和有什么不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21512975/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com