gpt4 book ai didi

asynchronous - openmpi 中的即时通信与同步通信

转载 作者:行者123 更新时间:2023-12-04 10:37:34 24 4
gpt4 key购买 nike

在阻塞和非阻塞操作(在 OpenMPI 中)的上下文中,我对同步的概念有点混淆 - 从这里开始:

  • link 1
    :MPI_Isend不一定异步(所以它可以同步?)
  • link 2
    :MPI_Isend()MPI_Irecv()是 MPI 的异步通信原语。

  • 我已经完成了之前关于 stackoverflow 的同步 - 异步 - 阻塞 - 非阻塞问题( asynchronous vs non-blocking ),但对我没有帮助。
    据我所知 :
  • 立即 ( MPI_Isend ): 方法返回并执行下一行 -> 非阻塞
  • 标准/非直接 ( MPI_Send ) : 对于大消息,它会阻塞直到传输完成
  • A 同步 操作块 ( http://www.cs.unc.edu/~dewan/242/s07/notes/ipc/node9.html )
  • 异步 操作是非阻塞的 ( http://www.cs.unc.edu/~dewan/242/s07/notes/ipc/node9.html )

  • 那么如何以及为什么 MPI_ISEND可能阻塞(链接 1)以及非阻塞(链接 2)?
    即异步和同步是什么意思 MPI_Isend这里 ?

    关于 MPI_Ssend 也出现了类似的混淆& MPI_Issend , 自 小号 在 MPI_ 小号 SEND 表示同步(或阻塞)和:-
  • MPI_Ssend : 同步发送阻塞,直到在远程进程和 ack 上接收到数据
    发件人收到,
  • MPI_Issend : 表示立即同步发送

  • 还有 mmediate 是非阻塞的,
    那么,MPI_ 怎么可能IS 发送至 小号 同步&返回 立即?

    我想在阻塞和非阻塞 OpenMPI 通信的上下文中异步和同步需要更清晰。
    在这方面的实际例子或类比将非常有用。

    最佳答案

    MPI 函数调用返回的时间(阻塞与非阻塞)和相应操作完成的时间(标准、同步、缓冲、就绪模式)之间存在区别。

    非阻塞调用 MPI_I...立即返回,无论操作是否完成。操作在后台或异步继续。除非操作完成,否则阻塞调用不会返回。非阻塞操作由它们的句柄表示,可用于执行阻塞等待( MPI_WAIT )或非阻塞测试( MPI_TEST )以完成。

    操作完成意味着 MPI 不再访问提供的数据缓冲区,因此可以重用它。发送缓冲区可以在消息完全放在网络上之后(包括部分消息可能仍被网络设备和/或驱动程序缓冲的情况)或已被网络设备缓冲在某处后可用以供重用MPI 实现。缓冲情况不需要接收器发布匹配的接收操作,因此不同步 - 接收可以在更晚的时间发布。阻塞同步发送 MPI_SSEND除非接收者发布了接收操作,否则不会返回,因此它同步两个等级。非阻塞同步发送 MPI_ISSEND立即返回,但异步(后台)操作不会完成,除非接收者发布了匹配的接收。

    阻塞操作等价于非阻塞操作,紧随其后的是等待。例如:

    MPI_Ssend(buf, len, MPI_TYPE, dest, tag, MPI_COMM_WORLD);

    相当于:

    MPI_Request req;
    MPI_Status status;

    MPI_Issend(buf, len, MPI_TYPE, dest, tag, MPI_COMM_WORLD, &req);
    MPI_Wait(&req, &status);

    一旦构建了消息,标准发送( MPI_SEND/ MPI_ISEND )就完成了,并且作为其第一个参数提供的数据缓冲区可能会被重用。没有同步保证 - 消息可能会在本地或远程缓存。对于大多数实现,通常有一些大小阈值:当同步发送更长的消息时,达到该大小的消息将被缓冲。阈值取决于实现。

    缓冲发送总是将消息缓冲到用户提供的中间缓冲区中,本质上执行更复杂的内存复制操作。阻塞版本( MPI_BSEND )和非阻塞版本( MPI_IBSEND )的区别在于前者在所有消息数据都被缓冲之前不会返回。

    就绪发送是一种非常特殊的操作。只有在发送方进行发送调用时目标等级已经发布了接收操作,它才会成功完成。它可以通过消除执行某种握手的需要来减少通信延迟。

    关于asynchronous - openmpi 中的即时通信与同步通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26881323/

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