基本信息
- 原书名:High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches

编辑推荐
本书将使为Intel Xeon Phi产品开发高层并行性(包括最优编程)更加简单。Intel Xeon和Intel Xeon Phi系列之间的通用编程方法对整个科学和工程领域都是有利的,相同的程序可以实现多核和众核的并行可扩展性和向量化。
—— 选自推荐序,Sverre Jarp, CERN
本书展示了如何借助同种编程方法来利用处理器和协处理器上的并行性,展示了如何有效地利用配备Intel Xeon Phi协处理器和Intel Xeon处理器或者其他多核处理器的系统的能力。本书包括多个行业和领域(如化学、工程以及环境科学)中成功的编程示例。每一章都包括所使用的编程技巧的详细讲解,并且展示了在Intel Xeon Phi协处理器和多核处理器上的高性能结果。这些示例不仅展示了这些高性能系统的特征,还给出了利用这些新型异构系统间并行性的方法。
本书特色
推动一致的基于标准的编程,展示多核处理器和Intel Xeon Phi协处理器上高性能编码的细节。
涵盖多个垂直领域的示例,展示真实应用代码的并行优化。
源代码可供下载,以便于未来进一步研究。
作者简介
詹姆斯·赖因德斯(James Reinders) Intel公司软件总监,首席技术布道师。参与多个旨在加强并行编程在工业界应用的工程研究和教育项目。他对多个项目做出了贡献,包括世界上首例TFLOPS级超级计算机(ASCI Red)和世界上首例TFLOPS级微处理器(Intel Xeon Phi协处理器)。
吉姆·杰弗斯(Jim Jeffers) Intel公司技术计算组的首席工程师和工程经理。目前,Jim是Intel技术计算可视化团队的领导。
内容简介
作译者
Mustafa AbdulJabbar是沙特阿拉伯阿卜杜拉国王科技大学(KAUST)极限计算研究中心的博士生,他致力于研究大规模算法优化(如FMM),并对弥补基于RMI的执行模型与分子动力学和流体力学中的现实应用程序之间的差距感兴趣。
Jefferson Amstutz是美国SURVICE Engineering公司的一名软件工程师。他探索可视化交互和高性能计算,为美国陆军实验室的应用程序提供支持。他致力于解决领域中各种基于物理的模拟问题,例如弹道脆弱性分析、无线电频率传播和柔体模拟。
Cédric Andreolli是法国Intel公司能源组的一名应用工程师。他帮助石油和天然气行业优化运行在Intel平台上的应用程序。
Edoardo Aprà是美国太平洋西北国家实验室(PNNL)环境分子科学实验室的首席科学家。他的研究方向是高性能计算算法和软件开发(尤其是化学应用)。他是NWChem包中分子密度函数理论(DFT)的主要开发
人员。
Nikita Astafiev是俄罗斯Intel公司Numerics团队的一名高级软件工程师。他致力于研究高度优化的数学函数。他感兴趣的关键领域包括浮点误差自动分析和底层优化。
目录
译者序
推荐序
前 言
作者简介
第1章 引言 1
1.1 学习成功经验 1
1.2 代码现代化 1
1.3 并发算法现代化 1
1.4 向量化和数据局部性现代化 2
1.5 理解功耗使用 2
1.6 ISPC和OpenCL 2
1.7 Intel Xeon Phi协处理器特性 2
1.8 众核和新异构系统 2
1.9 书名中没有Xeon Phi与新异构架构编程 3
1.10 众核的未来 3
1.11 下载 3
1.12 更多信息 4
第2章 从正确到正确&高效:Godunov
格式的Hydro2D案例学习 5
译者序
本书由来自工业界和学术界的众多一流科研人员共同编写,不仅包括大量不同的实际并行应用的优化经验,例如N体问题、量子化学、流体力学以及深度学习等,还包括一般性方法,例如SIMD、OpenCL、文件系统以及并发调度等。这些方法多为最新硬件架构上的研究成果,例如GPU和Xeon Phi。此外,本书配备大量程序代码实例,方便读者掌握相关技巧。总之,本书作者通过自己在高性能计算领域多年的实际编程和优化经验,选取最为关键和实用的优化技术进行讲解,可供相关领域的科研人员参考。
我们在阅读了本书英文版后,感觉本书有以下几个特色:首先,本书由长期在一线从事高性能应用开发和优化的专家编写,具有较强的实用性;其次,本书覆盖许多不同的高性能计算应用领域,范围十分广泛;再次,本书大部分应用涉及在最新Intel Xeon Phi协处理器上的优化设计,可借鉴性较强;最后,本书还包含大量通用优化技术的介绍,优化方法也具有广泛的适用性。
基于以上原因,我们组织了本书的翻译工作,具体分工如下:张云泉负责推荐序、前言、作者简介以及第7、12、14、28章的翻译,袁良负责第2、6、9、17、23、26章的翻译,贾海鹏负责第8、11、13、16、18、20、22章的翻译,李士刚负责第3、4、5、21、25、27章的翻译,曹婷负责第1、10、15、19、24章的翻译,最后由张云泉研究员审读全书译稿,以保证翻译的前后一致性。
由于时间仓促,加上书中某些术语目前没有统一译法,所以我们对一些术语采取了保留其英文名称的方法。对书中翻译方面的错误和不妥之处,恳请广大读者不吝批评指正。
——张云泉
前言
来自61个内核的灵感:编程新纪元
对我们来说,比Intel Xeon Phi协处理器的成功更引人瞩目的是Intel Xeon Phi协处理器对并行编程的激励。这个协处理器开启了编程的新篇章。而在多达61个内核上的并行编程似乎远比在4个或者8个内核上的并行编程更有吸引力。它激发了人们将并行编程技术首次应用于一些应用程序以及改进已有的并行应用程序的兴趣。它激励人们研究真正可扩展的并行编程,而不仅仅是在只有少量并行(比如四核处理器上)时取得的尚可(有时甚至微小)的性能提高。
Intel Xeon Phi协处理器为并行化带来了变革,为在其中探索的人们带了巨大的机遇。在这个过程中,我们不需要新的编程模型、新的语言或者新的工具。本书提供的并行编程工作和思想,描述了如何将旧的技术应用到新的异构编程平台上。这将帮助我们挖掘这一平台的巨大潜力。
我们非常感谢各位作者。各章的作者致力于在这个令人鼓舞的强大设备上编程。工作之余,他们为我们详述自己的工作,以便使我们学习他们的成功经验。我们希望你能够从中受益,并在这个并行计算的新时代获得成功。
致谢
本书的完成首先要感谢为此付出努力的软件开发工程师们,他们在工作之余与我们分享经验。本书浓缩了各位作者的成果。他们的名字列在其所写章节的开头,“作者简介”中有关于他们的简要介绍。我们要感谢所有作者坚持不懈的努力与理解。
感谢我们共同的朋友Sverre Jarp在“推荐序”中分享他独特的见解,感谢Joe Curley鼓励我们完成这件几乎不可能完成的事情。
James Reinders感谢妻子Susan Meredith,她的支持对于本书的完成至关重要。同时,James也感谢女儿Katie和儿子Andrew一直以来的大力支持。最后,James要感谢合著者和朋友Jim Jeffers,感谢他又一次成为完美搭档。
Jim Jeffers感谢妻子Laura一如既往的支持和鼓励。Jim感谢孩子(包括孩子们的配偶)Tim、Patrick、Colleen、Sarah、Jon,尤其是刚出生的孙女Hannah,他们无时无刻不在鼓舞着他。最后,Jim非常感谢合著者和朋友James Reinders,感谢他的专业技能和指导,感谢他坚定地恪守承诺使这本书从概念变成现实。
感谢Joe Curley、Bob Burroughs、Herb Hinstorff、Rob Farber和Nathan Schultz提供的支持、指导和反馈。
感谢整个Morgan Kaufmann团队的辛勤工作,包括与我们直接合作的三个人:Todd Green、Lindsay Lawrence和Priya Kumaraguruparan。
许多同事提供了信息、建议和想法。当然,还有很多人直接或间接地提供了帮助,对此我们深表感激。感谢所有帮助过我们的人,并对我们忘记提到名字的所有人表示歉意。
感谢所有人。
——Jim Jeffers
James Reinders
Intel公司
2014年11月
序言
堆积如山的计算需求:科学年正在形成
为了能够达到粒子加速器前所未有的高能量范围,CERN在21世纪初就开始为大型强子对撞机(LHC)做准备。
然而,这个项目已经不仅仅是构建粒子加速器。四个新的实验已经形成,科学家们也都在努力工作。ALICE、ATLAS、CMS和LHCb实验有数千个物理学家参与。无论是探测器的设计和建设,还是大型软件重建框架的设计和开发,都需要处理拍字节(PB)级的实验数据。这一切努力都是在寻求突破性的发现。
开放的标准
对于工业界,标准非常重要。投资开放标准一直是CERN的目标。我们发现Intel的理念也是一样。在与HEP界数百个科研机构和实验室的合作下,我们决定建立基于商用x86服务器的LHC计算网格(LCG)。在2001年,CERN成立了开放实验室,用于调研可能与LCG有关的新兴技术。从一开始,Intel就作为工业合作伙伴加入其中。在开放实验室里,我们进行的是领先于时代的研发工作,其结果可能是巨大的成功,也可能是惨败。这里曾经是且目前仍是一个非常真实的研发实验室!
对开放标准的浓厚兴趣,也驱使我们鼓励Intel将Intel Xeon Phi协处理器移植到Linux。Intel成功地实现了一个基于Linux的非常稳定的系统,并开放源代码,以鼓励创新。
热衷于众核架构
十年前,Intel Xeon处理器系列很快就演变成了强大的多核处理器。这是HEP界的天赐良机,因为每个物理事件(碰撞后所有粒子的状态)都独立于所有其他物理事件,所以大量的事件可以采用细粒度并行进行计算。在开放实验室,我们一直努力确保每一代新系统都能获得最佳的吞吐量。
在努力满足不断增长的计算需求的过程中,Intel所取得的发展为我们提供了新的选择。在2008年,我们非常热衷于Intel的“Larrabee”项目。虽然最初被宣传为图形处理器,但其本质上其实是世界上首个片上SMP集群。在这个设备上运行标准程序或程序内核应该是很容易实现的。当时没有硬件,只有如Michael Abrash的“First Look at the Larrabee New Instructions”这样的文章,在这篇文章中,Michael Abrash描述了标准x86指令集的一组非常复杂的向量扩展。在Intel实验室的Pradeep Dubey及其团队的帮助下,我们通过模拟代码片段看到了可喜的成果。可以并行地处于活跃状态的数百个x86线程引起了我们的兴趣。而常用的编程模型、语言和工具也将被证明仍具有巨大的价值。
Intel最初的性能目标主要集中于单精度(SP)浮点计算,这非常适合图像处理,但对于计算物理是远远不够的。我们的评论以及对于高性能双精度(DP)浮点计算的需求,在Intel Xeon Phi产品中得到了体现。
在2009年,除了Intel外,我们是第一个拿到了Knights Ferry(KNF)卡的团队,可以想象我们当时激动的心情。尽管现在把我们的所有论文成果结合在一起为时尚早,但Intel已经致力于这样的工作。与此同时,我们想要将一些LHC实验移植到KNF上。重离子实验ALICE和其他一些重离子实验的科学家们相互合作,开发了新版软件“Trackfitter”。新的代码根据传感器的坐标(传感器在给定的粒子碰撞中会发光)重构了整个轨迹,也就是重构了粒子的轨迹。在开放实验室,我们已经把它移植到Intel Xeon处理器上,因此只用了几个小时就将它移植到KNF上了。数天的工作就可以获得这样出色的成果,我们非常激动。
Xeon Phi的诞生:众核,卓越的向量ISA
我荣幸地收到邀请,于2010年5月在国际超级计算大会(ISC)上分享我们早期的工作成果。在这次会议上,Intel数据中心及互联系统事业部负责人Kirk Skaugen宣布Knights Corner为第一个产品级众核设备。不久之后更名为Intel Xeon Phi,预示着它将是系列产品,就像Intel Xeon一样。
你可能会问:为什么我们对此如此热衷?因为我们在Intel Xeon Phi的设计中看到了一个卓越的向量指令集架构(ISA)。通过将向量屏蔽寄存器与向量数据寄存器分开,该架构能够采用更优的方式处理程序中的数据流和控制流。Intel一直对业界的高昂积极性感到高兴,他们最近发布的AVX-512指令集将推动这个向量架构也加入他们的多核处理器。
同时,我们也对众核的设计很感兴趣。程序的指令级并行(ILP)有限,因此将它们并行运行在功耗只有几瓦的内核上效果会更好。我们与探测器模拟软件Geant 4的开发者一起将数百个线程运行在一个Xeon Phi协处理器上,执行整个探测器模拟进程来演示这种方法的优势。未来将告诉我们小内核、大内核或者两者的混合,哪个是最好的选择。我们的目标是对所有可能都做好准备。这个众核方案所取得的令人鼓舞的成果使我们想要尝试将这种方法应用到一个单纯的处理器上,而不是一个协处理器上。我们非常期待基于使用下一代Intel Xeon Phi(也称为Knights Landing(KNL))的单机众核处理器的可引导系统。
学习具有高可扩展性的并行程序设计
Intel Xeon和Intel Xeon Phi系列内核数量的激增,为HEP界带来了福音。高能物理科学具有天然的并行性。真正令人兴奋的挑战是扩展到众核和向量化的过程。CERN开放实验室已经为此做出了贡献。近十年里,开放实验室在一系列的研讨会和高校中教授向量化和并行化,目前已经有超过1000名学生。我很高兴能够为大家介绍这本书,希望越来越多的读者能够学习如何使用这个堪称“业界标准”的现代微处理器来提高程序的性能。
未来需求增长:编程模型的重要性
LHC在20年内仍将继续运行。我们还雄心勃勃地计划提高能量和亮度,这必将导致事件的复杂性增加,从而提高对计算的需求。因此,我们必须通过向量化获得更高的效率。
媒体评论
—— 选自推荐序,Severre Jarp, CERN
本书展示了如何使用同种编程方法来利用处理器和协处理器上的并行性,展示了如何最有效地利用配备Intel Xeon Phi协处理器和Intel Xeon处理器或者其他多核处理器的系统的能力。本书包括多个行业和领域(如化学、工程以及环境科学)中成功的编程示例。每一章都包括所使用的编程技巧的详细讲解,并且展示了在Intel Xeon Phi协处理器和多核处理器上的高性能结果。这些示例不仅展示了这些高性能系统的特征,还给出了利用这些新型异构系统间并行性的方法。
本书特色
·推动一致的基于标准的编程,展示多核处理器和Intel Xeon Phi上高性能编码的细节。
·涵盖多个垂直领域的示例,展示真实应用代码的并行优化。
·源代码可供下载,以便于未来进一步研究。