MPI-3 中增强的单边通信

本文介绍了MPI-3中增强的单边通信,包括窗口创建、单边操作如Put、Get、Accumulate,并强调了同步操作在并行计算中的重要性,提供了相关方法的使用例程。
摘要由CSDN通过智能技术生成

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

上一篇中我们介绍了 MPI-3 中引进的非阻塞通信子复制和组集合通信子创建方法,下面我们将介绍 MPI-3 中增强的单边通信方法。

MPI-2 引进了单边通信,也称远端内存访问(Remote Memory Access,RMA)。单边通信操作可以提供更高的性能(在有好的硬件支撑的情况下)和更强的功能,简化某些并行编程任务。在前面我们介绍过 MPI-2 引进的单边通信的相关概念和操作方法。MPI-3 极大地扩展了 MPI-2 的单边通信功能,澄清了一些比较模糊的概念,并且解决了限制 MPI-2 的单边通信广泛应用的一些限制。

方法接口

下面给出 MPI-3 中扩展的单边通信相关方法(MPI.Win 类方法)。

窗口创建

Create_dynamic(type cls, Info info=INFO_NULL, Intracomm comm=COMM_SELF)

创建并返回用于单边通信的窗口对象,返回的窗口对象没有为其分配的内存。在组内通信子 comm 所指定的通信子范围内所有进程上执行集合操作。info 对象用于为 MPI 环境提供优化所需的辅助信息,可用的 key 有:

  • no_locks:如果为 True,会假定所创建的窗口不会被加锁(即调用 MPI.Win.Lock 或者 MPI.Win.Lock_all)。如果只使用主动同步,则可以设定此 key 为 True,此时 MPI 实现可对单边操作做一些优化。
  • accumulate_ordering:默认情况下对同一个窗口的多个 Accumulate 操作会按照严格的调用顺序执行。如果将此 key 设置成 none,则 MPI 实现不会保证对同一个窗口的多个 Accumulate 操作的执行顺序。该 key 也可以设置成一系列由逗号分隔的 rar (read-after-read), war (write-after-read), raw (read-after-write) 和 waw (write-after-write) 以指明相应的执行顺序。放松对执行顺序的限制可能会提高执行效率。
  • accumulate_ops:如果设置成 same_op,MPI 实现会假定对窗口的同一目的地址的并发 Accumulate 调用都会使用同样的算符。如果设置成 same_op_no_op,MPI 实现会假定对窗口的同一目的地址的并发 Accumulate 调用都会使用同样的算符或者 MPI.NO_OP。该 key 的默认值为 same_op_no_op。

    Allocate(type cls, Aint size, int disp_unit=1, Info info=INFO_NULL, Intracomm comm=COMM_SELF)

分配指定大小的内存并创建和返回用于单边通信的窗口对象。在组内通信子 comm 所指定的通信子范围内所有进程上执行集合操作。每个进程所返回的窗口对象会包含一块分配好的 size 大小的内存。每个进程的 size 可以不同,甚至可以为 0。disp_unit 指定在远端内存访问操作中的地址单位,即 origin 所指定的位置在 target 一侧要以 target 进程所指定的 diap_unit 为单位计算。通常如果采用相同类型创建窗口,则统一将 disp_unit 设置成 1 即可。如果有的进程需要以组合数据类型(type)给出缓冲区,则可能需要指定 disp_unit 为 sizeof(type)。info 对象用于为 MPI 环境提供优化所需的辅助信息。

Allocate_shared(type cls, Aint size, int disp_unit=1, Info info=INFO_NULL, Intraco
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值