高性能并行珠玑:多核和众核编程方法
作者 : [美)詹姆斯·赖因德斯(James Reinders)吉姆·杰弗斯(Jim Jeffers)等 编著
译者 : 张云泉 袁良 贾海鹏 李士刚 曹婷 译
丛书名 : 计算机科学丛书
出版日期 : 2017-11-03
ISBN : 978-7-111-58080-5
定价 : 119.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 403
开本 : 16
原书名 : High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches
原出版社: Elsevier (Singapore) Pte Ltd
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书由英特尔的技术专家撰写,全面、系统地讲解在英特尔至强处理器和至强融核协处理器上进行并行处理和编程的方法和技术。书中展示了如何在处理器和协处理器上进行并行处理和编程——展示了更好利用Intel Xeon Phi协处理器和Intel Xeon 处理器或其他多核处理器的系统计算潜力的最有效的方法。全书包括大量来自多个行业和不同领域的成功并行编程工作的例子。每章既详细讲述所采用的编程技术,同时展示了其在Intel Xeon Phi协处理器和多核处理器上的高性能结果。几十个新的例子和案例显示的“成功经验”不仅展现了这些强大系统的主要特征,而且展示出如何在这些异构系统上保持并行化。

图书特色

本书将使为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技术计算可视化团队的领导。

图书前言

本书囊括了69位作者的Intel Xeon Phi协处理器并行编程经验,他们将处理器和协处理器的性能发挥得淋漓尽致。其中讨论了并行编程中许多关键的挑战和技术,并给出了令人激动的成果。大多数章节展示如何良好地进行扩展和向量化,这将有利于在多核处理器和众核Intel Xeon Phi协处理器上获得更好的性能。其他章节揭示如何在提供了通用编程模型的系统下利用由Intel Xeon处理器和Intel Xeon Phi协处理器组成的新异构系统。书中还提供了关于部署、管理、监控与运行这些新异构系统和集群的专家建议。
来自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月

上架指导

计算机\高性能计算

封底文字

本书将使为Intel Xeon Phi产品开发高层并行性(包括最优编程)更加简单。Intel Xeon和Intel Xeon Phi系列之间的通用编程方法对整个科学和工程领域都是有利的,相同的程序可以实现多核和众核的并行可扩展性和向量化。

—— 选自推荐序,Severre Jarp, CERN

本书展示了如何使用同种编程方法来利用处理器和协处理器上的并行性,展示了如何最有效地利用配备Intel Xeon Phi协处理器和Intel Xeon处理器或者其他多核处理器的系统的能力。本书包括多个行业和领域(如化学、工程以及环境科学)中成功的编程示例。每一章都包括所使用的编程技巧的详细讲解,并且展示了在Intel Xeon Phi协处理器和多核处理器上的高性能结果。这些示例不仅展示了这些高性能系统的特征,还给出了利用这些新型异构系统间并行性的方法。

本书特色

·推动一致的基于标准的编程,展示多核处理器和Intel Xeon Phi上高性能编码的细节。

·涵盖多个垂直领域的示例,展示真实应用代码的并行优化。

·源代码可供下载,以便于未来进一步研究。

作者简介

[美)詹姆斯·赖因德斯(James Reinders)吉姆·杰弗斯(Jim Jeffers)等 编著:
詹姆斯·瑞恩德斯(James Reinders )Intel公司软件总监,首席技术布道师。参与多个旨在加强并行编程在工业界应用的工程研究和教育项目。他对多个项目做出了贡献,包括世界上首例 Teraflop 级超级计算机(ASCI Red)和世界上首例 Teraflop 级微处理器(Intel Xeon Phi协处理器)。吉姆·杰弗斯(Jim Jeffers) Intel公司技术计算组的首席工程师和工程经理。Jim与人合著了Intel Xeon Phi《Coprocesser High Performance Programming》协处理器高性能编程指南(Morgan Kaufmann,2013 )。目前,Jim是Intel技术计算可视化团队的领导。

译者序

近十年,我国高性能计算机的发展突飞猛进,最近“天河二号”连续六次夺得全球超算TOP 500排行榜第一,标志着我国硬件的发展已经达到国际先进水平。然而,在高性能软件方面,我国至今未获得过Gordon Bell奖这一超算应用大奖,并行应用的发展整体上仍然落后于发达国家。我国高性能计算学术界和产业界早已充分认识到这一问题,多年来已设立众多相关研究项目并取得了一系列重要研究成果,与国外先进水平的差距也在逐步缩小。
本书由来自工业界和学术界的众多一流科研人员共同编写,不仅包括大量不同的实际并行应用的优化经验,例如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章的翻译,最后由张云泉研究员审读全书译稿,以保证翻译的前后一致性。
由于时间仓促,加上书中某些术语目前没有统一译法,所以我们对一些术语采取了保留其英文名称的方法。对书中翻译方面的错误和不妥之处,恳请广大读者不吝批评指正。

——张云泉

推荐序

能够为本书写推荐序,我感到非常荣幸,因为Intel Xeon Phi协处理器是一个激动人心的“计算神器”,欧洲核子研究中心(CERN)和高能物理(HEP)界都利用它来满足巨大的计算需求。当然,世界上还有许多科学和工程项目会因此受益。本书也包含了大量可以帮助程序员和科学家学习如何充分利用多核和众核处理器的实例。
堆积如山的计算需求:科学年正在形成
为了能够达到粒子加速器前所未有的高能量范围,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年内仍将继续运行。我们还雄心勃勃地计划提高能量和亮度,这必将导致事件的复杂性增加,从而提高对计算的需求。因此,我们必须通过向量化获得更高的效率。
重建物理事件的挑战在于如何捕捉每个交互的所有细节。在Intel的帮助下,我们实施“Geant V”项目来完成软件的向量化,以迎接这些新的挑战。受经验的启发,例如本书中所列的那些经验,在不久的将来我们很可能实现更高性能的解决方案。
本书将使为Intel Xeon Phi产品开发高层并行性(包括最优编程)变得更加简单。Intel Xeon和Intel Xeon Phi系列之间的通用编程方法对整个科学和工程领域都是有利的,相同的程序可以实现多核和众核的并行可扩展性和向量化。LHC还将运行很长时间,希望Intel Xeon Phi系列处理器能够在此期间不断优化来满足我们大量的计算需求。

——Sverre Jarp
CERN荣誉成员

图书目录

出版者的话
译者序
推荐序
前 言
作者简介
第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
2.1 现代计算机上的科学计算 5
2.1.1 现代计算环境 6
2.1.2 CEA的Hydro2D 6
2.2 冲击流体动力学的一种数值方法 7
2.2.1 欧拉方程 7
2.2.2 Godunov方法 7
2.2.3 哪里需要优化 9
2.3 现代计算机架构的特征 9
2.3.1 面向性能的架构 9
2.3.2 编程工具和运行时 10
2.3.3 计算环境 11
2.4 通向高性能的路 11
2.4.1 运行Hydro2D 11
2.4.2 Hydro2D的结构 12
2.4.3 优化 15
2.4.4 内存使用 16
2.4.5 线程级并行 17
2.4.6 算术效率和指令级并行 24
2.4.7 数据级并行 26
2.5 总结 32
2.5.1 协处理器与处理器 32
2.5.2 水涨船高 32
2.5.3 性能策略 33
2.6 更多信息 34
第3章 HBM上的SIMD与并发优化 36
3.1 应用程序:HIROMB-BOOS-MODEL 36
3.2 关键应用:DMI 36
3.3 HBM执行配置文件 37
3.4 HBM优化综述 38
3.5 数据结构:准确定位位置 38
3.6 HBM上的线程并行 41
3.7 数据并行:SIMD向量化 45
3.7.1 零散的可优化部分 46
3.7.2 过早抽象是万恶之源 48
3.8 结果 50
3.9 详情分析 51
3.10 处理器与协处理器可扩展性对比 52
3.11 CONTIGUOUS属性 53
3.12 总结 54
3.13 参考文献 54
3.14 更多信息 55
第4章 流体动力学方程优化 56
4.1 开始 56
4.2 1.0版本:基础版本 57
4.3 2.0版本:线程盒 59
4.4 3.0版本:栈内存 63
4.5 4.0版本:分块 63
4.6 5.0版本:向量化 64
4.7 Intel Xeon Phi协处理器上的运行结果 68
4.8 总结 69
4.9 更多信息 70
第5章 分阶段准同步栅栏 71
5.1 如何改善代码 74
5.2 如何进一步改善代码 74
5.3 超线程方阵 74
5.4 关于该方案哪些地方不是最优的 75
5.5 超线程方阵编码 76
5.5.1 如何确定内核间兄弟线程和内核内HT线程 77
5.5.2 超线程方阵手动分区方法 77
5.5.3 吸取教训 79
5.6 回到工作 80
5.7 数据对齐 81
5.7.1 尽可能使用对齐的数据 81
5.7.2 冗余未必是件坏事 81
5.8 深入讨论分阶段准同步栅栏 84
5.9 如何节省时间 86
5.10 几个留给读者的优化思考 90
5.11 类似Xeon Phi协处理器的Xeon主机性能优化 91
5.12 总结 92
5.13 更多信息 92
第6章 故障树表达式并行求解 93
6.1 动机和背景 93
6.1.1 表达式 93
6.1.2 表达式选择:故障树 93
6.1.3 程序实例中的故障树:基本模拟 93
6.2 实例实现 94
6.3 其他因素 101
6.4 总结 101
6.5 更多信息 101
第7章 深度学习的数值优化 102
7.1 拟合目标函数 102
7.2 目标函数与主成分分析 105
7.3 软件及样例数据 106
7.4 训练数据 109
7.5 运行时间 109
7.6 扩展结果 111
7.7 总结 111
7.8 更多信息 112
第8章 优化聚集/分散模式 113
8.1 聚集/分散在Intel架构下的说明 114
8.2 聚集/分散模式在分子动力学中的应用 115
8.3 优化聚集/分散模式 117
8.3.1 提高时间和空间的局部性 117
8.3.2 选择一种适当的数据布局:AoS与SoA 118
8.3.3 AoS和SoA之间的动态转换 119
8.3.4 分摊聚集/分散和转换的开销 122
8.4 总结 123
8.5 更多信息 123
第9章 N体问题直接法的众核实现 125
9.1 N体模拟 125
9.2 初始解决方案 125
9.3 理论极限 126
9.4 降低开销和对齐数据 128
9.5 优化存储层次 131
9.6 改进分块 133
9.7 主机端的优化 135
9.8 总结 136
9.9 更多信息 136
第10章 N体方法 137
10.1 快速N体方法和直接N体内核 137
10.2 N体方法的应用 138
10.3 直接N体代码 138
10.4 性能结果 141
10.5 总结 142
10.6 更多信息 142
第11章 使用OpenMP 4.0实现动态负载均衡 144
11.1 最大化硬件利用率 144
11.2 N体内核 146
11.3 卸载版本 149
11.4 第一个处理器与协处理器协作版本 150
11.5 多协处理器版本 152
11.6 更多信息 155
第12章 并发内核卸载 156
12.1 设定上下文 156
12.1.1 粒子动力学 156
12.1.2 本章结构 157
12.2 协处理器上的并发内核 158
12.2.1 协处理器设备划分和线程关联 158
12.2.2 并发数据传输 163
12.3 在PD中使用并发内核卸载进行作用力计算 166
12.3.1 使用牛顿第三定律并行评估作用力 166
12.3.2 实现作用力并发计算 167
12.3.3 性能评估:之前与之后 171
12.4 总结 173
12.5 更多信息 174
第13章 MPI和异构计算 175
13.1 现代集群中的MPI 175
13.2 MPI任务地点 176
13.3 DAPL提供者的选择 180
13.3.1 第一个提供者OFA-V2-MLX4_0-1U 180
13.3.2 第二个提供者ofa-v2-scif0以及对节点内部结构的影响 180
13.3.3 最后一个提供者 181
13.3.4 混合程序的可扩展性 182
13.3.5 负载均衡 184
13.3.6 任务和线程映射 184
13.4 总结 185
13.5 致谢 185
13.6 更多信息 185
第14章 Intel Xeon Phi协处理器功耗分析 186
14.1 功耗分析 186
14.2 用软件测量功耗和温度 187
14.2.1 创建功耗和温度监控脚本 188
14.2.2 使用micsmc工具创建功耗和温度记录器 189
14.2.3 使用IPMI进行功耗分析 190
14.3 基于硬件的功耗分析方法 192
14.4 总结 196
14.5 更多信息 196
第15章 集成Intel Xeon Phi协处理器至集群环境 197
15.1 早期探索 197
15.2 Beacon系统的历史 197
15.3 Beacon系统的架构 198
15.3.1 硬件环境 198
15.3.2 软件环境 198
15.4 Intel MPSS安装步骤 199
15.4.1 系统准备 199
15.4.2 安装Intel MPSS栈 200
15.4.3 生成和定制配置文件 201
15.4.4 MPSS升级 204
15.5 建立资源和工作负载管理器 204
15.5.1 TORQUE 204
15.5.2 序言程序 205
15.5.3 尾声程序 206
15.5.4 TORQUE/协处理器集成 207
15.5.5 Moab 207
15.5.6 提高网络局部性 207
15.5.7 Moab/协处理器集成 207
15.6 健康检查和监控 208
15.7 常用命令脚本化 209
15.8 用户软件环境 210
15.9 今后的方向 211
15.10 总结 212
15.11 致谢 212
15.12 更多信息 212
第16章 在Intel Xeon Phi协处理器上支持集群文件系统 214
16.1 网络配置概念和目标 214
16.1.1 网络选项概览 215
16.1.2 设置集群启用协处理器的步骤 216
16.2 协处理器文件系统支持 217
16.2.1 支持NFS 217
16.2.2 支持Lustre文件系统 218
16.2.3 支持Fraunhofer BeeGFS文件系统 219
16.2.4 支持Panasas PanFS文件系统 220
16.2.5 集群文件系统的选择 220
16.3 总结 220
16.4 更多信息 221
第17章 NWChem:大规模量子化学仿真 222
17.1 引言 222
17.2 回顾单线程CC形式 222
17.3 NWChem软件架构 225
17.3.1 全局数组 225
17.3.2 张量收缩引擎 226
17.4 设计卸载解决方案 226
17.5 卸载架构 229
17.6 内核优化 230
17.7 性能评估 232
17.8 总结 233
17.9 致谢 235
17.10 更多信息 235
第18章 大规模多系统上的高效嵌套并行 238
18.1 动机 238
18.2 基准测试 238
18.3 基线基准测试 239
18.4 流水线方法——Flat_arena类 240
18.5 Intel TBB用户管理任务调度平台 241
18.6 分层方法——Hierarchical_arena类 243
18.7 性能评估 243
18.8 对NUMA架构的影响 245
18.9 总结 246
18.10 更多信息 246
第19章 Black-Scholes定价的性能优化 248
19.1 金融市场模型基础及Black-Scholes公式 248
19.1.1 金融市场数学模型 248
19.1.2 欧式期权和公平价格概念 249
19.1.3 Black-Scholes公式 250
19.1.4 期权定价 250
19.1.5 测试平台架构 250
19.2 案例研究 251
19.2.1 初始版本——检验正确性 251
19.2.2 参照版本——选择合适的数据结构 251
19.2.3 参照版本——不要混合使用数据类型 252
19.2.4 循环向量化 253
19.2.5 使用快速数学函数:erff()与cdfnormf() 255
19.2.6 代码等价变换 256
19.2.7 数组对齐 257
19.2.8 尽可能降低精度 258
19.2.9 并行工作 259
19.2.10 使用热身 260
19.2.11 使用Intel Xeon Phi协处理器实现轻松移植 261
19.2.12 使用Intel Xeon Phi协处理器实现并行工作 261
19.2.13 使用Intel Xeon Phi协处理器和流存储 262
19.3 总结 263
19.4 更多信息 264
第20章 使用Intel COI库传输数据 265
20.1 使用Intel COI库的第一步 265
20.2 COI缓冲区种类和传输性能 266
20.3 应用程序 269
20.4 总结 270
20.5 更多信息 270
第21章 高性能光线追踪 271
21.1 背景 272
21.2 向量化的光线遍历 272
21.3 Embree光线追踪内核 273
21.4 在应用程序中使用Embree 274
21.5 性能 276
21.6 总结 277
21.7 更多信息 278
第22章 OpenCL程序的可移植性能 279
22.1 两难的困境 279
22.2 OpenCL简介 280
22.3 OpenCL示例:矩阵乘 282
22.4 OpenCL与Intel Xeon Phi协处理器 285
22.5 性能评估 285
22.6 案例研究:分子对接算法 287
22.7 性能评估:性能可移植性 289
22.8 相关工作 291
22.9 总结 291
22.10 更多信息 291
第23章 应用到Stencil计算中的特性提取和优化方法 292
23.1 引言 292
23.2 性能评估 293
23.2.1 测试平台的AI 293
23.2.2 内核的AI 294
23.3 标准优化 296
23.3.1 自动应用调试 301
23.3.2 自动调试工具 304
23.3.3 结果 305
23.4 总结 305
23.5 更多信息 307
第24章 剖析指导优化 308
24.1 计算机科学中的矩阵转置 308
24.2 工具和方法 309
24.3 串行:初始的就地转置实现 310
24.4 并行:使用OpenMP增加并行度 313
24.5 分块:提高数据局部性 315
24.6 规范化:多版本微内核 319
24.7 预组织:释放更多的并行性 322
24.8 总结 326
24.9 更多信息 327
第25章 基于ITAC的异构MPI应用优化 328
25.1 亚式期权定价 328
25.2 应用设计 329
25.3 异构集群中的同步 330
25.4 通过ITAC寻找性能瓶颈 331
25.5 建立ITAC 331
25.6 非均衡的MPI运行 332
25.7 手动负载均衡 335
25.8 动态老板-工人负载均衡 337
25.9 结论 339
25.10 更多信息 340
第26章 集群上可扩展OOC解法器 341
26.1 引言 341
26.2 基于ScaLAPACK的OOC分解算法 342
26.2.1 核内分解 342
26.2.2 OOC分解 343
26.3 从NVIDIA GPU移植到Intel Xeon Phi协处理器 344
26.4 数值结果 346
26.5 结论和展望 350
26.6 致谢 350
26.7 更多信息 350
第27章 稀疏矩阵向量乘:并行化和向量化 352
27.1 引言 352
27.2 稀疏矩阵数据结构 353
27.2.1 压缩后的数据结构 354
27.2.2 分块 356
27.3 并行SpMV乘法 356
27.3.1 部分分布式并行SpMV 356
27.3.2 完全分布式并行SpMV 357
27.4 Intel Xeon Phi协处理器的向量化 358
27.5 评估 362
27.5.1 Intel Xeon Phi协处理器 363
27.5.2 Intel Xeon处理器 365
27.5.3 性能比较 366
27.6 总结 366
27.7 致谢 367
27.8 更多信息 367
第28章 基于Morton排序的性能优化 368
28.1 通过数据重排提高缓存局部性 368
28.2 性能改进 368
28.3 矩阵转置 369
28.4 矩阵乘法 373
28.5 总结 377
28.6 更多信息 378

教学资源推荐
作者: James D.Foley,Andries van Dam,Steven K.Feiner,John F.Hughes,Richard L. Phillips
作者: 毛科技 陈立建 主编
作者: 徐凤生 主编 徐凤生 戎丽霞 李天志 编著
作者: [英]理查德·约翰·安东尼(Richard John Anthony)著
参考读物推荐
作者: 华诚科技 编著
作者: 章小莉等
作者: 华诚科技 编著
作者: 侯晴 汪翔