描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111580805丛书名: 计算机科学丛书
内容简介
本书由Intel的技术专家撰写,系统地讲解在IntelXeon处理器和IntelXeonPhi协处理器上进行并行处理和编程的方法和技术,展示了更好地利用Intel处理器或其他多核处理器的系统计算潜力的有效方法。全书包括大量来自多个行业和不同领域的并行编程例子。每章既详细讲述所采用的编程技术,同时展示了其在IntelXeonPhi协处理器和多核处理器上的高性能结果。几十个新的例子和案例显示的“成功经验”不但展现了这些强大系统的主要特征,而且展示出如何在这些异构系统上保持并行化。
目 录
目 录
High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches
出版者的话
译者序
推荐序
前 言
作者简介
第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.7Intel 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 总结
High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches
出版者的话
译者序
推荐序
前 言
作者简介
第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.7Intel 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 总结
前 言
前 言High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches本书囊括了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 JeffersJames ReindersIntel公司2014年11月
来自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 JeffersJames ReindersIntel公司2014年11月
评论
还没有评论。