mpi4py 中的单边通信同步操作

本文从本人简书博客同步过来

上一篇中我们介绍了 mpi4py 中的单边通信相关操作,下面我们将介绍单边通信的同步操作。

单边通信(远端内存访问)操作包括以下两个范畴:

  • 主动目标通信。与点到点通信类似,数据从一个进程的内存传送到另一个进程的内存中,两个进程都直接参与通信。
  • 被动目标通信。数据仍从一个进程转移到另外一个进程,但这个进程是一个第三方进程。真正参与通信的两个进程都是源——一个负责将数据 put 到第三方进程,另一个则从第三方进程 get 到本地内存中。

与此对应,MPI 提供以下三种远端内存访问的同步机制:

  1. Fence:主动同步

    • 提供并行计算中常用到的宽松同步模型,主要用于活动目标通信;
    • 在同一个 window 对象组中的所有进程都需要调用 Fence 来启动一个数据交换阶段;
    • 数据交换阶段中所有进程都可以发出读写操作请求;
    • 在同一个 window 对象组中的所有进程都需要调用 Fence 来结束一个数据交换阶段;
    • 第二次 Fence 同步完成时所有的操作请求都已完成。
  2. Start/Post,Wait/Complete 同步:主动同步

    • 也用于活动目标通信,适用于需最大限度减少同步操作的场合——仅对一组进程进行同步;
    • 和 Fence 类似,但源进程和目标进程指出他们可以和哪一个组的进程进行通信;
    • 目标进程:启动一个暴露阶段(Exposure Epoch): Post 打开,Wait 关闭;
    • 源进程:启动一个访问阶段(Access epoch):Start 打开,Complete 关闭。
  3. Lock/Unlock:被动同步

    • 单边非同步通信;
    • 目标进程不主动参与通信过程;
    • Lock/Unlock开始/结束被动通信阶段;
    • 可通过此类同步操作模拟共享内存访问模式——即公告牌模式,进程可以随机方式访问/更新公告牌的不同部分;
    • <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值