《并行计算的编程模型》一3.5.2 RMA函数使用

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

3.5.2 RMA函数使用

OpenSHMEM API有三种类型的put和get函数:一般、类型和跨步。对RMA的一般put和get函数是类型不可知的,只简单地传输字结块,这两个一般函数对大部分传输都足够用了,但缺乏类型和跨步接口的便利性。OpenSHMEM提供的类型put和get函数操作在连续的原生数据类型块上,函数名指明了位宽或对象类型(因此有20个put和20个get函数指明数据类型或被访问的对象大小)。OpenSHMEM也提供跨步访问函数,允许以指定跨步访问源和目标地址(如数组的每第n个元素)。代码清单3-4、代码清单3-5和代码清单3-6分别描述了一般、类型和跨步put和get函数。
screenshot
screenshot
screenshot
screenshot
每个函数的前两个参数标识要更新的(target)位置和数据要被拷贝的(source)位置。对put函数,target是远程的(被动端PE),由最后一个参数(pe)标示。source是本地的主动端PE。对get函数,要更新的target位置在本地主动端PE,source在远程被动端PE。值得注意的是虽然在被动端PE标明的位置必须在其对称内存里,但主动端的位置允许在对称或非对称内存。倒数第二个参数len描述要传输的数据量,对一般函数是字节数,对类型和跨步函数是标明的原生类型数目。跨步参数tst和sst分别标明访问目标和源数组的跨步,单位是函数名所标明的类型。当跨步设为1时即为连续传输,与这些函数的类型版本相同。代码清单3-7显示使用get和put进行环形通信的简单示例,注意在这个示例中,唯一需要同步的是在设置self和被另一PE读取之间的同步屏障。
screenshot

相关文章
|
运维 Linux Windows
【帕鲁更新攻略】如何快速在阿里云上更新游戏服务端版本
幻兽帕鲁游戏服务端版本升级后,需要玩家同步更新才能继续游戏,您可以按照以下操作完成游戏服务端升级。
50308 840
【帕鲁更新攻略】如何快速在阿里云上更新游戏服务端版本
|
存储 缓存 API
DMA-BUF缓冲区共享和同步【ChatGPT】
DMA-BUF缓冲区共享和同步【ChatGPT】
|
SQL 安全 算法
【惊险揭秘】Django高手的十大安全秘籍:如何从零构建坚不可摧的Web堡垒?
【8月更文挑战第31天】《Django安全性指南:构建安全Web应用的十大关键步骤》介绍了在使用Django框架开发Web应用时,如何通过十个关键步骤提升应用安全性。从使用HTTPS、设置CSRF保护到限制密码复杂度、防止SQL注入,文章详细阐述了每一步的具体实施方法及示例代码,帮助开发者构建更加安全可靠的Web应用。
406 0
|
缓存 NoSQL 算法
【Redis系列笔记】内存淘汰及过期删除
Redis是一个内存键值对数据库,所以对于内存的管理尤为重要。Redis内部对于内存的管理主要包含两个方向,过期删除策略和数据淘汰策略。内存淘汰策略指在Redis内存使用达到一定阈值的时候,执行某种策略释放内存空间,以便于接收新的数据。数据过期删除策略是指在数据的有效时间到期后,如何从内存中删除这些数据的规则。
470 0
|
程序员 Ruby
“茴” 字的六种写法---l 类方法的七种定义方式
“茴” 字的六种写法---l 类方法的七种定义方式
|
架构师 虚拟化 Docker
dpdk课程学习之练习笔记六(虚拟化理解vhost和virtio)
dpdk课程学习之练习笔记六(虚拟化理解vhost和virtio)
471 0
|
分布式计算 数据处理 Spark
Spark【RDD编程(四)综合案例】
Spark【RDD编程(四)综合案例】
|
弹性计算 运维 监控
全托管:MSE+SAE 微服务应用全托管解决方案
进入新世纪互联网时代后,以腾讯和阿里为代表的社交电商巨头开始面临流量和复杂度大增的挑战。此时的研发团队相较于之前已经明显扩大,并开始实践 SOA /微服务架构,比如阿里的 HSF。
1711 0
全托管:MSE+SAE 微服务应用全托管解决方案
|
Unix Linux Shell
Linux / Mac 常用命令,看这一篇就够了!(下)
Linux命令是在命令行(CLI)上运行的程序。命令行是接受文本行并将其处理成计算机指令的界面。任何图形用户界面 (GUI) 都是命令行程序的抽象。通过 GUI 进行多步骤处理的任务有时候可以通过在命令行中键入命令在几秒钟内完成。学习基本的命令行有助于提升工作效率。 相信很多小伙伴会使用 Mac 进行开发,由于 Mac 的系统是基于unix的,所以 Mac 终端的一些命令与linux通用的。下面列举的多数命令是可以在Mac中使用的。
652 0
|
存储 SQL 关系型数据库
五分钟搞懂MySQL索引下推
五分钟搞懂MySQL索引下推
1127 0
五分钟搞懂MySQL索引下推

热门文章

最新文章