数据并行的众核加速器的存储结构复杂,且不能被CPU直接访问,现有的编程模型缺少对于数据存储布局的有效抽象,对数据流并行的支持也需改进。本项目,提出数据为中心的多种手段,对于现有的多线程编程模型进行扩展,改进异构系统的可编程性。本课题的研究内容如下1)提出异构平台的机器抽象,提供手段描述数据对象在层次存储结构上的布局、数据和线程的亲和关系和线程分组。我们将引入层次分块数组的数据存储形状描述,并借鉴分割全局地址空间语言的思想。2)提出一组表达机制,把数据流并行的模式加入共享内存的编程模型。提出定义流和连接流的方法,提供流宽度的描述方法,方便用户的性能调优。除了相关的编译分析变换技术,还需要研究3)提出有利于并行编程的、CPU和加速器之间统一的执行环境,包括线程间通信调度技术,流水线并行的执行环境,和全系统的资源管理。
Heterogeneous platform;language extension;data/thread locality;parallelizing compiler;performance portability
本课题的研究目标是通过数据为中心的语言扩展及其相关的编译和运行时技术的研究,支持传统多线程编程模型到异构平台的优化映射,降低编程和性能调优的难度。本课题的主要研究成果如下1)语言扩展方面提出多种数据为中心的制导,降低并行编程和优化的难度。包括,基于层次数据分布的UPC语言扩展,表达了数据和线程之间的层次亲和关系,统一了GPU集群上多层次并行性的表达;为OpenMP语言提出新型调度子句,描述数据在异构平台上的数据分布和数据组织,让用户优化数据传输和负载平衡;提出针对数据语义的OpenMP语言扩展,支持深度的自动代码优化和调优。2)在运行时支持方面,提出智能数据管理的若干技术,包括避免乒乓通信的DSM-H方法和跨并行域的预取技术,后者通过大范围的预取调度优化了程序的整体性能。3)在编译支持技术方面,提出基于数据语义抽象的计算模式自动识别技术,以stencil计算为例验证了自动模式识别的可行性;提出面向语义模式的编译优化框架EPOD,在传统编译器中引入语义模式构建机制,包括优化策略脚本和低层的优化编程接口,持续地将新的优化经验集成在通用编译器中。此外提出优化适配器以重用已有的优化策略,改善编译框架的成长性。4)这些语言扩展在UPC-H和OpenMP-H两个编译系统原型中进行了实现,两个编译系统都同时支持CUDA平台和国产大规模并行众核处理器Godson-T。本课题提出的语言扩展与创新的编译框架、运行时支持一起,让传统的多线程并行程序可以获得接近甚至超过手工编程的性能。