pgi发售可支持openacc的pgiaccelerator编译器.pdfVIP

pgi发售可支持openacc的pgiaccelerator编译器.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pgi发售可支持openacc的pgiaccelerator编译器

OpenACC 编程标准介绍 小小河 2013年1月9 日 2007 年以来,以nVidia GPU 为代表的加速器并行计算风起云涌,带有加速器的超级计 算机在 TOP500 中的份额逐年增加,支持加速器的主流应用软件也呈爆炸式增长,研究加速 器计算的技术人员数以百万计,世界范围内的大学、研究机构竞相开设相关课程。 为什么使用 OpenACC 目前有三家厂商提供加速器产品:nVidia GPU、AMD GPU、Intel 至强 Phi 协处理器。 三种加速器使用的编程语言分别为 CUDA C/CUDA Fortran、OpenCL 和 MIC 导语。加速器 计算有四个技术困难:一是 CUDA/OpenCL 等低级语言编程难度大,且需要深入了解加速 器的硬件结构。而大部分的用户不是职业编程人员,学习一门新的编程技术将耗费大量时间、 人力、财力。二是加速器的计算模型与 CPU 差别很大,移植旧程序需要几乎完全重写。大 量的旧程序在性能优化上已经千锤百炼,稳定性上也久经考验,完全重写是不可完成的任务。 三是低级编程语言开发的程序与硬件结构密切相关,硬件升级时必须升级软件,否则将损失 性能。而硬件每隔两三年就升级一次,频繁的软件升级将给用户带来巨大负担。四是投资方 向难以选择。三种加速器均有自己独特的编程语言,且互不兼容。用户在投资建设硬件平台、 选择软件开发语言时就会陷入困境,不知三种设备中哪个会在将来胜出。如果所选加速器将 来落败,将会带来巨大损失;而犹豫不决又将错过技术变革的历史机遇。 为了克服这些困难,PGI、Cray、CAPS 和 nVidia 四家公司联合创立 OpenACC 应用编 程接口标准,并于 2011 年 11 月的 SC11 大会上发布 1.0 版。OpenACC 1.0 标准大部分内容 来自 PGI Accelerator 编程模型 ,并借用了CUDA C 的一些术语,标准文档行文上与OpenMP 相似。 OpenACC 可以克服这四个困难。OpenACC 应用编程接口的机制是,编译器根据作者的 意图自动产生低级语言代码。程序员只需要在原程序中添加少量导语,无须学习新的编程语 言和加速器硬件知识,可以迅速掌握。只在原始程序上添加少量导语,不破坏原代码,开发 速度快,既可并行执行又可恢复串行执行。在硬件更新时,重新编译一次代码即可,不必手 工修改代码。OpenACC 标准制定时就考虑了目前及将来的多种加速器产品,同一份代码可 以在多种加速器设备上编译、运行,零代价切换硬件平台。 OpenACC 设计目标  不破坏原始代码,保证修改的可逆性;  开发工作量小;  将计算密集的代码段卸载到加速器上并行计算;  在主机与加速器间提供多种形式的数据传递;  支持多种加速器设备; 两种情形下,不能破坏原始代码。移植旧程序时,旧程序的性能和可靠性已经被时间证 明,修改程序原始代码将带来安全隐患。有些程序不但需要在加速器上运行,还需要在没有 加速器的服务器上运行。OpenACC 借鉴 OpenMP 的导语(directive )模式,在原始代码上 添加一些导语,告诉编译器将哪些代码段卸载到加速器上执行、如何在主机与加速器间移动 数据。如果编译器不支持 OpenACC 标准或支持选项没有打开,编译器将忽略所有的 OpenACC 导语,编译出的程序只在 CPU 上运行。因此,用 OpenACC 移植程序不必对原始 代码作任何修改。 当前的绝大多数算法都是以串行方式描述,程序设计结构也是串行的 ,使用 CUDA/OpenCL 等低级语言移植旧程序或编写新程序时,需要重新设计算法,将串行算法转 换为并行算法,这就要求程序员的对算法有深入了解,这对职业编程人员是一个挑战,需要 花费大量时间学习本专业以外的算法 ;使用低级语言需要了解加速硬件结构,程序优化更需 要对线程调度机制有深刻理解,这对非计算机专业的广大用户非常困难,学习成本高昴。而 OpenACC 只要求用户指明哪些代码需要放在加速器上并行计算,生成低级语言代码、根据 设备优化代码等工作完全交由编译器来完成。导语代码非常简洁,工作量小,开发速度快、 周期短。 程序计算密集部分往往是求解线性方程组、求解特征值、最小二乘、矩阵向量乘、矩阵 矩阵乘等数值代数运算 ,它们通常

您可能关注的文档

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档