基本信息

编辑推荐
HPC领域资深专家推荐,中国*大OpenACC技术社区创建者撰写,不可多得的OpenACC技术专著
全面讲解OpenACC编程规范、语法的行为机理与设计动机,160个完整示例覆盖众多并行编程场景
内容简介
计算机书籍
中国*大OpenACC技术社区创建者撰写,为数不多系统介绍OpenACC的技术专著。全面讲解OpenACC编程规范、语法的行为机理与设计动机,160个完整示例覆盖众多并行编程场景。
全书分10章,按照并行程序开发步骤组织,建议第*遍顺序阅读。
第1章介绍主流加速器产品的硬件架构、主流并行编程模型等,以期读者对并行编程生态有全面了解。
第2章介绍OpenACC语言的设计思路,并列出OpenACC的主要语法供快速查阅。
第3章是本书核心,将大量计算并行化,这是程序提速的根本手段。用大量示例讲述两个计算构件parallel和kernels的行为特点,然后用它并行化Jacobi 迭代。
第4章介绍多种数据管理工具,包含结构化子语copy/create/present、结构化导语data、非结构化导语enter data/exit data/update/declare等,将加速器带来的数据移动时间减到*少。
第5章介绍routine导语,嵌套调用并行化自定义函数,用来开发大型程序。
第6章讲解用异步队列隐藏数据传输时间、调度多个加速器同时工作等高级特性。
第7章介绍OpenACC与CUDA C/CUDA Fortran和各类库的混合编程。
第8章是所有的运行时函数,以供读者编程查阅。
第9章指导部署开发环境,以便快速上手。
第10章介绍神威?太湖之光的编程模型及其对OpenACC的功能扩展。
作译者
目录
前言
第1章 并行编程概览1
1.1 加速器产品1
1.1.1 英伟达GPU3
1.1.2 英特尔至强融核处理器9
1.2 并行编程语言12
1.3 CUDA C14
1.3.1 线程组织方式16
1.3.2 运行过程18
1.3.3 内存层级20
1.3.4 性能优化技术21
第2章 OpenACC概览22
2.1 OpenACC规范的内容23
2.1.1 抽象加速器模型25
2.1.2 存储模型25
2.1.3 计算执行模型26
2.2 OpenACC 2.5规范29
第3章 OpenACC计算构件36
3.1 条件编译37
前言
为什么要写这本书
面对浩如烟海的数据,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编写,相互配合,兼得程序性能和开发效率。
本科生、研究生:花最少的时间掌握一门计算工具,省出时间学习更多的知识。
序言
然而,这种较为“前卫”的结构设计,也给编程者带来了很大的挑战:他们不得不面对更为复杂的底层结构和更多的存储层次,以往的算法设计和程序代码也不得不随之调整。在这种情况下,诸如CUDA、OpenCL、OpenACC等新的异构并行编程语言应运而生。其中,OpenACC是一种极具发展前景的编程模型,其具有使用方便、代码改动小、平台适用范围广的特性,将为新时代的编程者们带来极大的帮助。
OpenACC虽然有着易学易用的特点,但是要想全面掌握其丰富的语法特性和使用技巧,以编写高效的程序,还是需要一本有权威性、实用性的技术书籍来指导。本书作者何沧平博士是华为高级系统设计工程师,也是OpenACC QQ 群的群主,具有多年的程序开发经验,一直致力于OpenACC的发展与推广,在并行计算应用领域有着很深的造诣和独到的见解。
对于想要掌握OpenACC使用技巧和编程精髓的读者来说,本书是一本非常具有参考价值的学习教程。与传统的技术书籍相比,本书更加注重内容的可读性和易用性,逻辑清晰,内容全面准确,且更加注重编程实践,有大量C/C++/Fortran的完整代码实例,便于读者学习和实践。作为第一本中文的OpenACC技术书籍,可谓为国内的编程学习者带来了福音。
特别值得一提的是,本书首次引入了OpenACC在 “神威·太湖之光” 超级计算机上应用情况的章节。神威·太湖之光是2016年全球TOP500排名第一的超级计算机,配备了完全由国人自主研发的异构众核处理器。其超强的计算速度成为了高性能计算应用的强力助推。结合应用的特点和处理器独特的结构设计,系统对OpenACC进行了扩展。目前,该系统完成了气候气象、航空航天、船舶工程、药物设计等十多个领域的大型应用课题,其中三个高性能计算应用入围 “戈登贝尔奖”。这是我国近30年来首次入围该奖项。在这些应用的开发过程中,OpenACC起到了关键作用。
漆锋滨
国家并行计算机工程技术研究中心
媒体评论
——漆锋滨 CCF常务理事,国家并行计算机工程技术研究中心研究员