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

OpenSHMEM是一种单程序多数据(SPMD)编程模型,适用于高性能、高可扩展性的并行计算。它由松散同步的处理单元(PE)组成,每个PE有私有和对称内存。对称内存允许所有PE直接访问,通过放置和获取操作实现通信,同时支持同步和原子内存操作。OpenSHMEM内存模型与PGAS语言类似,强调数据移动与同步解耦。

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):被更新的内存位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值