11、OpenSHMEM 中的同步与内存重用

OpenSHMEM 中的同步与内存重用

OpenSHMEM 是用于 PGAS 库的开放标准,提供单边通信语义。自 2012 年标准化进程完成后,OpenSHMEM API 经历了一系列快速的扩展提议。其中包括添加处理元素(PE)团队,以更灵活地定义用于问题分解的 PE 子集,以及引入空间概念,可在特定团队内进行内存管理而无需全局同步。然而,仍有一个问题影响团队的可用性,即用户需要管理实现集体操作时内部使用的同步内存。

1. OpenSHMEM 概述

OpenSHMEM 是 SHMEM 通信库的事实标准,实现了分区全局地址空间(PGAS)模型。每个 PE 管理对称内存堆的一个分区,用于对称数据对象的分配。这些分配可通过丰富的远程内存访问(RMA)操作(包括原子内存操作 AMOs)进行访问。此外,OpenSHMEM 还定义了一组用于 PE 集合的内存同步和集体操作。其库 API 支持 C、C++ 和 Fortran 编程语言,大多数开源 OpenSHMEM 应用使用 C 语言开发。

OpenSHMEM 库 API 遵循 PGAS 编程模型,支持执行 C、C++ 或 Fortran SPMD 程序的 PE 之间的通信、同步和其他操作。其他有用的操作包括集体操作调用(对称内存分配、广播、归约、收集和同步)、原子内存操作、分布式锁和数据传输排序原语(fence 和 quiet)。大多数集体调用是针对由活动集定义的 PE 子集进行的,活动集由每个集体调用中的三个参数定义。

历史上,OpenSHMEM 中特定通信操作有两个主要元素:目标 PE(集体操作时为多个 PE)和感兴趣的内存位置。虽然在过去的规范迭代中它们是分开的组件,但都受到全局视图的约束。前者问题可通过处理定义良

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值