《并行计算的编程模型》一3.7.2 同步数组和工作数组

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

3.7.2 同步数组和工作数组

集合函数需要对称同步数组(及归约操作的对称工作数组),对特定的操作和使用的PE子集设置合适的大小并初始化。这些数组代表全局状态,每个数组的对称成分应该按照一个整体来处理。当对同步数组或工作数组进行访问时,上述描述应该被理解为引用所有PE上该数组对称镜像的整个集合。对同步和工作数组有几个重要的点需要注意。

  • 初始化:程序要确保同步数组的分配和初始化及工作数组的分配在集合操作开始使用它们之前在所有PE上完成,这可以通过使用静态分配的数组或在动态分配后使用全局同步屏障来执行。一般所有这些数组都在临近程序启动时分配,因此最多只需要一个全局同步屏障。
    排他性:一旦一个集合操作开始,程序必须在所有PE完成操作前保护操作的同步或工作数组免于被其他活动修改(如内存操作、RMA、其他集合操作)。这意味着这些数组不能立即被后续的集合操作重用。
  • 完成时取值:一旦所有PE完成,同步或工作数组返回到可以被重用的状态。
  • 保护重用:为保护同步或工作数组在一系列集合操作中重用,程序可能需要在重用同步或工作数组之前加全局同步屏障(不好),或在两个同步或工作数组之间轮换(更好)。
  • 重用需要相同的PE集:当且仅当参与操作的PE子集保持不变,即开始PE、参与PE数和 log2(PE_跨步)都相同,同类型(屏障、广播、收集、归约)的连续操作不需要对重用的同步数组进行初始化。如果工作数组对某个操作尺寸合适(元素的数目和类型)也可以被重用。
相关文章
|
5月前
|
编译器 C++
我的C++奇迹之旅:值和引用的本质效率与性能比较1
我的C++奇迹之旅:值和引用的本质效率与性能比较
|
5月前
|
存储 分布式计算 安全
我的C++奇迹之旅:值和引用的本质效率与性能比较2
我的C++奇迹之旅:值和引用的本质效率与性能比较
|
5月前
|
存储 传感器 机器学习/深度学习
Java数组全套深入探究——进阶知识阶段6、三维数组以及更多维度数组的概念和用法
Java数组全套深入探究——进阶知识阶段6、三维数组以及更多维度数组的概念和用法
96 0
|
12月前
|
C++ 索引
19 深入理解数组:底层探究
深入理解数组:底层探究
69 0
|
存储 Java 测试技术
4.3 Java数组性能优化策略:数组与集合性能对比分析
4.3 Java数组性能优化策略:数组与集合性能对比分析
153 0
数据结构上机实践第七周项目1 - 自建算法库——顺序环形队列
数据结构上机实践第七周项目1 - 自建算法库——顺序环形队列
149 0
数据结构上机实践第七周项目1 - 自建算法库——顺序环形队列
|
存储 Java
《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.1 从迭代到流的操作
本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第1章 ,第1.1节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1689 0
|
算法 机器学习/深度学习 存储
带你读《强化学习:原理与Python实现》之三:有模型数值迭代
本书理论完备,涵盖主流经典强化学习算法和深度强化学习算法,实战性强。基于Python、Gym、TensorFlow 2、AlphaZero等构建,是一本配套TensorFlow 2代码的强化学习教程书,全书完整地介绍了主流的强化学习理论,读者可以了解强化学习基础知识,通过实例感受强化学习的魅力,并了解强化学习前沿进展。
|
并行计算 程序员
《并行计算的编程模型》一3.6 排序和同步
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.6节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
926 0
|
并行计算 API
《并行计算的编程模型》一3.4.1 初始化和查询
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.4.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1056 0
下一篇
无影云桌面