Intel多核/众核平台上OpenACC的源到源翻译器

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:killeverrui
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
由于具有不同的结构特点,使得通用CPU和加速器组成的异构系统能够更有效的处理通用计算任务。典型的加速器有NVIDIA GPU、AMD GPU、Intel XeonPhi协处理器,它们对应的编程模型分别为CUDA、OpenCL和Xeon Phi制导语句。而这些原生的编程模型存在着一些技术局限性:一是CUDA、OpenC L等低级语言编程复杂,优化困难。二是由于加速器和CPU的计算模型存在很大的差异性,移植原程序到加速器上对程序员来说是一项十分艰巨的任务。三是用针对特定硬件平台的语言开发的程序,硬件升级时软件也要升级,而频繁的软件升级将给用户带来巨大负担。四是投资方难以选择,各种加速器都有自己的编程语言,并且彼此之间不兼容,这给用户选择硬件平台和开发语言带来了困扰。OpenACC标准通过添加编译制导语句指示编译器将相关的代码段或循环卸载到加速器上执行,可以克服上文提到的四个技术局限性。本文面向Intel Xeon P hi平台设计并实现了源到源翻译工具OpenACC_JX,能够将带有OpenACC制导语句的C语言程序自动翻译成优化的Intel Offload代码,从而实现了Intel Xeon Phi协处理器对OpenAACC的支持,并大大提高了Xeon Phi协处理器在并行计算方面的编程效率。本文的主要研究内容和成果包括:(1)设计了OpenACC到)Keon Phi平台上并行程序的自动翻译工具,该翻译工具基于LLVM编译框架下的Clang编译器实现,重点扩展了Clang的预处理器、语法分析器和语义分析器来识别OpenACC制导语句以及利用它的重写机制实现代码的转换,并基于Lib Tooling库将翻译工作封装成为工具。本文的翻译工具实现了在Xeon Phi平台上支持OpenACC,并提高了Xeon Phi编程效率。(2)实现了OpenACC制导语句到Offload制导语句的自动映射。根据OpenACC制导语句的分类将映射关系分为任务管理、数据管理、并行性管理三部分的映射。(3)为了保证翻译后的Offload代码的性能,在原有设计的源到源翻译系统中实现了两种优化技术,分别为数据传输优化和向量化优化。其中采取数据传输优化策略是因为对于很多应用,处理器之间的通信是并行程序执行时重要的时间开销来源,降低数据传输操作带来的开销对于提高程序整体性能有着重要作用;采取向量化优化策略是为了能够利用Xeon Phi的向量处理单元进行批量计算,从而提高计算速度。本文采用NPB测试集对OpenACC_JX翻译工具进行了性能评测。实验结果表明,OpenACC_JX翻译工具翻译而成的Offload代码的性能对于三种问题规模Class A, ClassB, Class C在平均情况下分别能够达到手写代码性能的74%,76%,80%。
其他文献
随着计算机网络时代的到来,人们开始通过网络的途径享受各种娱乐服务和学习各种知识,并对家庭数字媒体服务提出了更高的要求。人们需要一种方便可靠的途径,能在家庭环境下获
随着个人电脑市场的增长和存储设备数据存储能力的不断提高,个人数据量变得越来越大。文件系统作为管理用户数据的基础,其名字空间变得越来越复杂,这导致文件系统元数据访问
随着硬件工艺技术的进步,处理器芯片集成了越来越多的晶体管,处理器速度的飞速提高导致其与内存的速度鸿沟不断拉大。现代主流的体系结构都采用分层缓存架构来缓和处理器和内
农业虫害是常对作物造成严重危害的农业生产重要限制因素之一,也是我国农业经济惨遭严重损失的主要原因,而绝大部分的农业生产者对虫害的认识不清,盲目防治,造成农药的浪费,
选址问题是组合优化领域中的一类重要问题,它是对于一些网络服务器、核电站或者物流中心等有限且重要的资源进行选址决策,在生产管理与调度,网络通信,理论计算机科学等方面有
网络上信息的共享是人们关注的一大热点。目前资源组织管理以C/S方式为主,即资源集中存放在服务器端,资源的交换、用户之间的交流通过服务器完成,用户和服务器之间的交流是系
面向服务的体系架构(Service oriented Architecture,SOA)作为一种新的分布式软件系统架构,为互联网环境中服务共享、服务重用、业务集成提供了新的解决方案,它能实现系统之
无线传感器网络是近年来世界各国科学研究的热点之一,作为二十一世纪十大新兴技术之一,它将对人类生活的许多方面产生深远的影响。然而,目前无线传感器网络在安全方面面临着
近30年来,伴随着并行计算机的出现,并行计算迅速发展。SMP(对称共享存储多处理机)是一类被广泛使用的并行计算机系统。OpenMP则是其上最流行的并行程序开发模型。OpenMP具有
时间序列是包含一系列随时间变化的数据的序列,它反映了某种属性值随时间变化的特征。在金融、经济、自然科学、信息工程等重要领域,每天都会产生大量的时间序列,因此如何有效地