Page 74 - 《软件学报》2024年第6期
P. 74
2650 软件学报 2024 年第 35 卷第 6 期
译实现. 第 5 节通过实验验证该优化方法的有效性. 第 6 节给出总结与展望.
1 相关工作
国际上围绕 SPM 结构特点及片上数据移动优化开展了一系列研究. Venkataramani 等人针对 SPM 用于多线
程应用程序时遇到的挑战, 提出了一个协调数据管理的编译时框架 [7] , 可以自动识别共享/私有变量, 并将这些变量
及这些变量的拷贝, 一起放置到合适的片内或片外存储器中. Tao 等人提出了一个用于优化 SPM 和主存之间的多
[8]
线程数据传输的编译时框架 MSDTM , 该框架通过应用程序分析和依赖性检查来确定数据传输操作的分配, 并
[9]
通过所设计的性能模型来推导数据传输的最佳粒度. Chakraborty 等人设计了一个名为 UniSPM 的框架, 使用低
开销的递归启发式算法来解决 NP-hard 的映射问题, 为基于 NoC 的 SPM 多核多阶段多线程应用程序提供统一的
线程和数据映射框架. 李建江等人对 IBM Cell 的众核存储层次特点提出了一种基于运行支持库的 OpenMP 数组
私有化的编译优化方法 [10] , 对可重用数据进行私有化, 充分利用有限的 SPM 资源减少 DMA 通信, 以提升程序执
行效率. Yu 等人基于 SPM 提出了一种新的 GPU 资源管理方法 [11] , 通过将寄存器文件扩展到空闲的 SPM 资源上,
在逻辑上提供了一个更大的寄存器文件, 从而提高 GPU 的线程并行性. 上述存储层次相关优化工作针对 Cell、
处理器芯片主要由
GPU 等商用众核架构特征开展, 而国产高性能申威众核处理器与上述硬件平台在众核架构和存储层次上都存在
较大的差异, 因此需要探索针对申威众核处理器架构和存储结构特征的优化.
近年来, 业界基于申威众核平台开展了许多面向 SPM 结构特征的编译优化工作. 何王全等人在面向申威众核
的并行编程语言 Parallel C 的设计与实现中提出了数据自动布局与 DMA 缓冲优化 [12,13] , 通过编译器分析程序数
据访问特征和访存收益模型, 完成小容量数组在 SPM 上的自动布局, 并针对循环中的连续访问优化, 完成自动
DMA 缓冲优化. Wu 等人针对“神威·太湖之光”超算系统上支持 DMA 的 SPM 存储结构, 提出了一种基于带宽感
知的 OpenCL 程序循环平铺方法 [14] , 对传统的仅带宽和仅容量考虑的循环平铺方法进行了改进, 有效提升了带宽
利用率和 SPM 重用. 在实现 OpenCL 编译系统在申威众核处理器上的内存模型映射过程中, 实施了针对 SPM 的
访存优化, 即在 SPM 空间充足的情况下, 将主存中的数据通过 DMA 存放到 SPM 中 [15] . Zhou 等人针对申威众核
处理器核心的 SPM 存储结构特点, 开展了基础函数库的内存延迟优化 [16] , 他们提出了一种有效的自动数据转换
方法和一种表查找方法来优化基础函数库的访存延迟. 上述工作充分利用了申威众核处理器 SPM+DMA 的硬件
特征, 但是限于目标平台特点, 没有考虑到新一代众核处理器上私有 SPM+共享 SPM+DMA+RMA 的片上存储层
次与数据移动机制特征, 无法发挥共享 SPM 及片上 RMA 通信的优势.
2 研究平台及编程语言
本文所提方法主要面向申威众核处理器进行设计, 基于新一代申威众核上的并行编程语言及编译系统 Parallel
C 2.0 进行实现. 下面就相关概念和基本知识予以介绍.
2.1 新一代申威众核处理器
本文的研究工作面向国产申威众核处理器. 申威众核处理器已经经过多代发展, 下面以神威新一代超级计算
机使用的最新一代申威众核处理器 SW26010Pro [17] 为例, 对申威众核处理器的结构进行介绍.
SW26010Pro 是面向高性能计算领域开发的处理器, 采用片上计算阵列集群和共享存储结构相结合的异构众
核体系结构. 如图 2 所示, SW26010Pro 6 个核组组成. 核组内采用异构众核结构, 包含 1 个管
理核心和 1 个运算核心阵列. 每个运算核心阵列包含 64 个运算核心, 采用拓扑为 8×8 的阵列高速通信网络进行连
接, 支持运算核心间 SPM 上的 RMA 通信.
单个核组的存储系统结构如图 3 所示, 运算核心有 256 KB 的 SRAM 作为数据缓存, SRAM 可分档配置为
SPM 和 Cache. 所有运算核心共享主存, 可以通过 ld/st 访存指令直接访问主存空间. 运算核心还可以通过 DMA 实
现 SPM 和主存之间的批量数据传输, DMA 传输的效率与传输的数据量、DMA 命令数量、数据在主存中的连续
性以及 DMA 传输方式等密切相关. 此外, 运算核心阵列还支持 SPM 共享和 RMA 两种机制实现阵列上 SPM 间的