[发明专利]一种快速开发异构并行程序的方法有效
申请号: | 201410300760.4 | 申请日: | 2014-06-27 |
公开(公告)号: | CN104035781B | 公开(公告)日: | 2017-06-23 |
发明(设计)人: | 刘铁刚;何晓峰;赵越 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 开发 并行 程序 方法 | ||
技术领域
本发明涉及计算机应用和高性能计算领域,具体地说是一种快速开发异构并行程序的方法。
背景技术
2006年,英伟达(NVIDIA)公司推出了可软件编程进行通用计算的图形处理器G80,该处理器包含128个流式微处理器。为了挖掘其图形处理器(GPU,Graphic Processing Unit)的计算潜力,英伟达公司于2008年5月推出了计算统一设备架构(CUDA,Compute Unified Device Architecture)编程模型和适用于其产品线的软件工具开发包。自此GPU编程和其高性能逐渐被科研和市场所接受和重视,被广泛应用到计算流体力学、生物制药、金融、能源等许多领域。英伟达生产的专用于服务器上的Tesla协处理器已经被部署到许多计算集群或超级计算机上,包括中国制造的超级计算机天河I号。
2008年6月,苹果公司在苹果全球开发者大会(WWDC,Worldwide Developers Conference)上提出了OpenCL规范。OpenCL旨在提供一组通用的开发API,以便让编程人员能开发出GPU通用计算软件。不同于CUDA,使用OpenCL开发的软件可运行在任何支持OpenCL标准的图形处理器上,而不仅只是英伟达自家生产的图形处理器。
2010年,英特尔(Intel)公司向开发者推出了基于众核集成架构(MIC,Many Integrated Core Architecture)的处理器产品,并于2011年向市场推出了第一代MIC产品。2012年英特尔正式将这一加速器产品线命名为Intel Xeon Phi。在世界Top500中排名第一、由中国制造的超级计算机天河II号上,部署的加速器是Intel Xeon Phi。
2011年,英伟达,Cary,PGI和CAPS公司推出了适用于并行计算的编程标准OpenACC。OpenACC类似于OpenMP,开发人员只需在需要并行的代码块中插入并行预编译即可,无需关注底层的实现细节。
相对于CUDA,OpenCL提供了统一的编程接口,用其开发的软件可适用于更多的硬件平台。而CUDA的优势在于更接近于硬件,能更好地发挥硬件的性能;其缺点则是可移植性差,目前CUDA程序几乎只能运行在英伟达公司生产的图形处理器上。而MIC与两者不同,需要按照英特尔公司提出的编程模型才能利用其计算能力。
对想获益于异构体系性能的开发者而言,CUDA、OpenCL和MIC的差异造成了选择上的困难:需要在开发前权衡程序的通用性和性能。如若全部学习和使用,则将加大学习的负担和开发的难度。
另一方面,无论是CUDA、OpenCL还是MIC,开发者均需要对现有的代码进行重构才能得到适用于CPU+Accelerator的异构环境的并行程序。对现有的代码进行重构可能会引入bug,同时开发人员需要投入相应的努力才能得到异构的并行程序。
面对不断发展的硬件和性能不断提升的异构并行系统,需要与之相对应的软件才能发挥出其真正潜力。为了实现采用异构并行程序计算的需求,亟需一种快速有效的异构并行程序开发方法。
发明内容
为了解决上述技术问题,本发明提出了一种快速开发异构并行程序的方法。该方法的技术任务是解决现有技术的不足,为异构架构编程人员提供一种快速开发异构并行程序和性能优化的方法。
本发明的技术方案实施过程如下:
步骤一:串行CPU程序分析,分析工作和方案包括:
1)使用第三方性能测试工具获取程序运行的数据;
2)使用打印时间方式测试程序中的性能瓶颈;
3)根据算法和数据结构特点分析代码块是否可并行;
步骤二:对可并行的关键函数或者模块插入OpenACC指令进行异构并行化,其中:
1)对程序整体性能影响很小的代码块无需并行化;
2)大部分的时间耗时都是因为循环迭代造成,可以使用#pragma acc parallel loop语句将循环迭代并行化;
3)使用#pragma acc data、#pragma acc update等指令显式指定数据复制、更新,以保证数据在主机和加速器上的一致性和有效性;
步骤三:完成了基于OpenACC指令的程序异构并行化之后,使用支持OpenACC的编译器针对不同硬件平台编译代码。在编译过程中:
1)编译器需支持或兼容所采用的OpenACC指令的版本和标准;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410300760.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电动剪指甲机
- 下一篇:一种拉链包防盗报警装置