《并行计算的编程模型》一3.3 OpenSHMEM存储模型

简介: 本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 OpenSHMEM存储模型

OpenSHMEM是单程序、多数据(single program multiple data,SPMD)编程模型,特点是强调单边通信以及数据移动与同步解藕,是提供高性能、高可扩展性通信和同步程序的库。OpenSHMEM程序由松散同步的进程组成,这些进程也叫作处理单元(Processing Element,PE)。所有PE同时开始并执行相同的程序,通常在各自集合问题的子域上执行操作,并周期性地与其他PE通信。
OpenSHMEM内存模型是PGAS,类似于其他PGAS语言,例如统一并行C(见第4章)和Co-Array Fortran语言。OpenSHMEM模型将程序的执行分成PE,代表通信任务及相关的数据,类似与MPI列的概念。每个PE的数据空间又进一步分成只能本PE访问的“私有”内存和所有PE都能访问的“对称”内存。对称内存之所以这样命名是因为对各PE来说虽然其数据对象有独特的值,但其逻辑结构是相同的,这样的话只要简单指明远程PE和所要访问对称对象的局部地址即可远程访问对称内存的数据。
术语
首先需要以下一些定义以便支撑接下来的讨论。

  • 处理单元(Processing Element,PE):执行的通信线程。
  • 主动集(Active Set):参与某一特定操作的PE。
  • 对称内存(Symmetric Memory):对所有PE可见的内存集,包括静态分配的内存和用对称分配函数shmalloc()动态分配的内存。
  • 非对称内存(Asymmetric Memory):每个PE私有的内存,包括栈空间和通过其他方式(如malloc())动态分配的内存。
  • 主动端(Active Side):在单边通信中,产生API调用发起数据移动的一方。
  • 被动端(Passive Side):在单边通信中,没有产生与通信相关的API调用的一方。
  • 源(Source):被读取的内存位置。
  • 目标(Target):被更新的内存位置。
  • 放置(Put):远程写操作,将本地主动端的源数据拷贝到远程被动端目标地址。
  • 获取(Get):远程读操作,将远程被动端的源数据拷贝到本地主动端的目标地址。
  • 同步(Synchronization):保证两个或多个PE间的操作顺序或内存一致性。
  • 原子内存操作(Atomic memory operation):作为一个整体完成不受其他操作干扰的操作或操作块。
  • 归约(Reduction):作用于多个PE上原生数据类型的操作,例如查找最大最小值。
  • 集合通信(Collective communication):1对N、N对1或N对N通信(如1对所有广播)。
相关文章
|
1月前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
61 2
|
6月前
|
机器学习/深度学习 分布式计算 并行计算
MapReduce是一种用于并行计算的编程模型和处理大规模数据集的实现
MapReduce是一种用于并行计算的编程模型和处理大规模数据集的实现
93 0
|
存储 机器学习/深度学习 人工智能
神经网络推理加速入门——计算和存储的分离
硬件优化对于计算的加速效果是显而易见的,理解了底层硬件的原理,可以帮助我们更好的完成计算优化。
神经网络推理加速入门——计算和存储的分离
|
存储 机器学习/深度学习 人工智能
神经网络推理加速入门——存储和计算的高效结合
如果把存储过程和计算过程结合起来,那么整个推理加速就能快很多。
神经网络推理加速入门——存储和计算的高效结合
|
机器学习/深度学习 人工智能 并行计算
从英伟达A100 GPU说起,浅谈细粒度结构化稀疏
稀疏化是神经网络轻量化的重要手段,其中细粒度剪枝和结构化稀疏各有利弊。如何取二者之所长,实现更强大的模型压缩能力和端侧加速能力呢?本文将为大家介绍「细粒度结构化稀疏」。
678 0
从英伟达A100 GPU说起,浅谈细粒度结构化稀疏
|
并行计算 API
《并行计算的编程模型》一2.5.1 GASNet工具
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.5.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1020 1
|
并行计算 安全
《并行计算的编程模型》一1.9 其他特性
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.9节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1475 0
|
并行计算 算法 API
《并行计算的编程模型》一导读
对于正在编程的程序员,编程模型可被看作一台虚拟机,并可通过编程语言和函数库实现。如果某个编程模型成为计算机科学研究中的热点,需要具有以下特性:高效性(易于描述各种抽象算法)、移植性(兼容各种硬件计算平台)、高性能(高效均衡地利用硬件平台的计算能力)、通用性(广泛地描述各种算法)。
3456 0
|
并行计算 索引
《并行计算的编程模型》一2.3.1 开始和结束
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.3.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1100 0
|
并行计算
《并行计算的编程模型》一1.11 总结
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.11节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1051 0