暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
OpenACC并行编程实战.pdf
128
87页
0次
2023-12-04
50墨值下载
随着计算机科学技术的飞速发展,作为计算机的核心——处理器的体系结构也经历了从单核、多核到众核的革命性跨越。如今,“异构+众核”已成为超级计算机主流的体系结构,并将引领未来E级计
算的进一步发展。
然而,这种较为“前卫”的结构设计,也给编程者带来了很大的挑战:他们不得不面对更为复杂的底层结构和更多的存储层次,以往的算法设计和程序代码也不得不随之调整。在这种情况下,诸如
CUDA、OpenCL、OpenACC等新的异构并行编程语言应运而生。其中,OpenACC是一种极具发展前景的编程模型,其具有使用方便、代码改动小、平台适用范围广的特性,将为新时代的编程者们带来极大
的帮助。
OpenACC虽然有着易学易用的特点,但是要想全面掌握其丰富的语法特性和使用技巧,以编写高效的程序,还是需要一本有权威性、实用性的技术书籍来指导。本书作者何沧平博士是华为高级系统设
计工程师,也是OpenACC QQ群的群主,具有多年的程序开发经验,一直致力于OpenACC的发展与推广,在并行计算应用领域有着很深的造诣和独到的见解。
对于想要掌握OpenACC使用技巧和编程精髓的读者来说,本书是一本非常具有参考价值的学习教程。与传统的技术书籍相比,本书更加注重内容的可读性和易用性,逻辑清晰,内容全面准确,且更加
注重编程实践,有大量C/C++/Fortran的完整代码实例,便于读者学习和实践。作为第一本中文的OpenACC技术书籍,可谓为国内的编程学习者带来了福音。
特别值得一提的是,本书首次引入了OpenACC在“神威·太湖之光”超级计算机上应用情况的章节。神威·太湖之光是2016年全球TOP500排名第一的超级计算机,配备了完全由国人自主研发的异构
众核处理器。其超强的计算速度成为了高性能计算应用的强力助推。结合应用的特点和处理器独特的结构设计,系统对OpenACC进行了扩展。目前,该系统完成了气候气象、航空航天、船舶工程、药物设
计等十多个领域的大型应用课题,其中三个高性能计算应用入围“戈登贝尔奖”。这是我国近30年来首次入围该奖项。在这些应用的开发过程中,OpenACC起到了关键作用。
漆锋滨
国家并行计算机工程技术研究中心
2010年以来,中国超级计算机建设突飞猛进,欣欣向荣。一个原因是国力强盛,大力投资高新科技;另一个原因是整体科技水平提高,需求旺盛。天气预报、石油物探、工程仿真、基因测序等传统应
用对计算资源的需求持续增长,以深度学习为代表的人工智能大爆发,资金雄厚的互联网公司对计算能力极度渴求。超级计算机的建设、应用主战场正在从教育科研单位转向科技企业。
为什么要写这本
面对浩如烟海的数据,CPU已经力不从心,因此世界领先的超级计算机都装备大量的加速器或者众核处理器。
目前主流加速器产品是NVIDIA GPU、AMD GPU和Intel至强Phi协处理器。三种加速器使用的编程语言分别为CUDA C/CUDA Fortran、OpenCL和MIC导语。加速器计算有4个困难。
一是CUDA/OpenCL等低级语言编程难度大,且需要深入了解加速器的硬件结构。而大部分的用户不是专业编程人员,学习一门新的编程技术将耗费大量时间。
二是加速器的计算模型与CPU差别很大,移植旧程序需要几乎完全重写。大量的旧程序在性能优化上已经千锤百炼,稳定性上也久经考验,完全重写是不可完成的任务。
三是低级编程语言开发的程序与硬件结构密切相关,硬件升级时必须升级软件,否则将损失性能。而硬件每隔两三年就升级一次,频繁的软件升级将给用户带来巨大负担。
四是投资方向难以选择。三种加速器均有自己独特的编程语言,且互不兼容。用户在投资建设硬件平台、选择软件开发语言时就会陷入困境,不知三种设备中哪个会在竞争中胜出。如果所选加速器将
来落败,将会带来巨大损失;而犹豫不决又将错过技术变革的历史机遇。
OpenACC应运而生,可以克服这4个困难。OpenACC的编程机制是,程序员只在原程序中添加少量编译标识,编译器根据作者的意图自动产生低级语言代码。无须学习新的编程语言和加速器硬件知
识,便能迅速掌握。只添加少量编译标识,不破坏原代码,开发速度快,既可并行执行又可恢复串行执行。在硬件更新时,重新编译一次代码即可,不必手工修改代码。OpenACC标准制定时就考虑了目前
及将来的多种加速器产品,同一份代码可以在多种加速器设备上编译、运行,无成本切换硬件平台。掌握OpenACC后,编写程序省时、省力、省心。
本书特色
笔者学习超算技术时有过苦泪:教材一上来就讲技术细节,只能机械地学习,不清楚这些算法、语法要解决什么问题,花费巨大精力后却发现解决不了自己的难题;新技术的资料往往是英文的,而且
零碎,还不一定准确,收集、学习成本很高,求助无门;科学计算领域的祖师语言Fortran现在有点小众,新技术资料更少。为节省读者时间,本书特别重视易读性、易用性,具体有如下特点。
·第一本中文OpenACC技术书籍,方便国内读者系统阅读,快速掌握
·全面、准确:本书覆盖OpenACC的所有特性,重要特性结合例子详细讲解,不常用的特性列出标准定义,方便查找。对特性、功能的描述均来自OpenACC规范,并用实例验证,确保准确。
·大量的例子:书中的示例代码超过160个,不是代码片断,而是完整代码,拿来即用。全部由笔者编写、测试,运行无报错。
·兼顾C/C++和Fortran:以C/C++为主来讲解,但所有的例子都有Fortran版的代码,Fortran专用特性会详细讲解。物理、气象等领域积累的优秀Fortran代码可以借此移植到新硬件上,重焕生机。
·阅读轻松:按照并行程序的编写、调优顺序,先交代各阶段面临的问题,然后自然引入OpenACC提供的解决办法,最后实测验证效果。一切顺理成章,读者不会有云里雾里的感觉。
读者对象
·科学家:迅速改造旧程序,快速编写新的原型程序验证算法、理论,将更多的时间投入到高价值的科研创新中去。
·企业程序员:一套程序适配多种运行平台,维护简单;性能敏感的部分用CUDA等低层语言编写,性能不敏感部分用OpenACC编写,相互配合,兼得程序性能和开发效率。
·本科生、研究生:花最少的时间掌握一门计算工具,省出时间学习更多的知识。
如何阅读本书
第1章介绍超级计算技术的发展趋势和并行编程概况,可以从中了解OpenACC的作用。没有CUDA C基础的读者能够掌握基本概念,便于深入理解OpenACC的并行化技术。第2章介绍OpenACC语言的设
计思路。第3~4章是本书的核心,将计算部分并行化,并将数据传递时间减到最少。至此,读者已经能够编写性能良好的OpenACC程序。第5~7章介绍高级并行技术,以进行极致性能优化,以及与CUDA
C/CUDA Fortran和各类库的混合编程。第8章给出OpenACC规定的所有运行时例程,不用细读,用到时再参考。第9章指导部署开发环境,以便快速上手。
勘误和支
本人水平有限,错误与疏漏在所难免,恳请批评指正。联系笔者请发送电子邮件至hpcfan@foxmail.com。更多技术资源请访问www.gpujisuan.com。技术交流QQ群284876008(将满)、564520462,欢迎
加入。
致谢
感谢国家并行计算机工程技术研究中心漆锋滨老师撰写第10章,并为本书作序。感谢PGI美女工程师王珍、帅气工程师仰琎歆、Daniel Tian、资深专家Mathew Colgrove的技术支持。感谢机械工业出版社
的策划编辑高婧雅尽心协调与支持。
何沧平
1章 
对绝大多数人而言,编程语言只是一个工具,讲究简单高效。科学家的主要精力应该用在科研创新活动上,编程工作仅仅是用来验证创新的理论,编程水平再高也不可能获得诺贝尔奖。对学生和企业
程序员而言,技术无穷尽,永远学不完,不用即忘,应该认清技术发展方向,学习有前途的技术,不浪费青春年华。
OpenACC语言专为超级计算机设计,因此读者需要了解超级计算机的技术演进方向,特别是主流加速器的体系架构、编程模型,看清OpenACC的应用场景,有的放矢。普通读者虽然不会用到大型机
群,但小型机群甚至单台服务器、普通显卡的计算模式都是相同的。
最近几年的著名超级计算机(见附录A)均采用加速器作为主要计算部件,可预见未来几年的上层应用仍将围绕加速器展开。
1.1 加速器产
超级计算机的加速器历史上有多种,本节只介绍当前流行的两种:英伟达GPU和英特尔融核处理器。加速器的物理形态是PCIe板卡,样子大致如图1.1所示,图1.2是拆掉外壳后的样子,正中央的
GPU芯片,芯片周围的小黑块是显存颗粒,金黄色的边缘处是与PCIe连接的金手指,通过PCIe插槽与CPU相连。图1.3中的机架式服务器左下部装有4块GPU卡,图1.4是服务器的主板俯视图,箭头处就是4
个PCIe插槽。
of 87
50墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜