新書推薦:
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
《
基于鲲鹏的分布式图分析算法实战
》
售價:NT$
495.0
《
夺回大脑 如何靠自己走出强迫
》
售價:NT$
299.0
《
图解机械工程入门
》
售價:NT$
440.0
《
中文版SOLIDWORKS 2024机械设计从入门到精通(实战案例版)
》
售價:NT$
450.0
《
旷野人生:吉姆·罗杰斯的全球投资探险
》
售價:NT$
345.0
《
希腊人(伊恩·莫里斯文明史系列)
》
售價:NT$
845.0
《
世界巨变:严复的角色(王中江著作系列)
》
售價:NT$
500.0
|
內容簡介: |
本书是介绍大规模并行编程OpenACC的综合实践性书籍之一。书中前3章介绍了OpenACC背后的概念和OpenACC开发工具;第4章至第7章带你了解第1个真实世界的OpenACC程序,并揭示OpenACC程序编译背后的魔力,从而引入更多概念;第8章至第10章涵盖高级主题,例如OpenACC的替代方案、底层设备交互、多设备编程和任务并行性;第11章和第12章探讨了OpenACC实现潜在新语言特性的各种研究领域。
|
目錄:
|
赞誉
推荐序
译者序
前言
致谢
贡献者简介
译者简介
第1章 OpenACC概述1
1.1 OpenACC语法2
1.1.1 导语3
1.1.2 子语3
1.1.3 API例程与环境变量4
1.2 计算构件4
1.2.1 kernels5
1.2.2 parallel6
1.2.3 loop7
1.2.4 routine7
1.3 数据环境9
1.3.1 数据导语9
1.3.2 数据子语10
1.3.3 cache导语11
1.3.4 部分数据传输11
1.4 总结12
1.5 练习12
第2章 循环级并行性14
2.1 kernels循环与parallel循环的比较15
2.2 并行性的三个级别18
2.2.1 gang、worker与vector子语18
2.2.2 将并行性映射到硬件19
2.3 其他loop构件20
2.3.1 循环折叠20
2.3.2 independent子语21
2.3.3 seq与auto子语22
2.3.4 reduction子语23
2.4 总结25
2.5 练习26
第3章 OpenACC编程工具27
3.1 架构的通用特性27
3.2 编译OpenACC代码28
3.3 OpenACC应用程序的性能分析30
3.3.1 性能分析层次和术语30
3.3.2 性能数据获取31
3.3.3 性能数据记录和显示32
3.3.4 OpenACC性能分析接口32
3.3.5 支持OpenACC的性能工具33
3.3.6 NVIDIA性能分析工具34
3.3.7 针对混合应用程序的Score-P工具基础架构35
3.3.8 TAU性能系统40
3.4 识别OpenACC程序中的bug42
3.5 总结44
3.6 练习45
第4章 使用OpenACC编写第一个程序48
4.1 案例研究48
4.1.1 串行代码49
4.1.2 编译代码55
4.2 创建一个原生的并行版本56
4.2.1 找到热点56
4.2.2 使用kernels安全吗56
4.2.3 OpenACC实现56
4.3 OpenACC程序的性能59
4.4 优化的并行版本60
4.4.1 减少数据移动61
4.4.2 特别聪明的小改动62
4.4.3 最终的结果63
4.5 总结65
4.6 练习66
第5章 编译OpenACC67
5.1 并行性的挑战68
5.1.1 并行硬件68
5.1.2 映射循环69
5.1.3 内存层次结构71
5.1.4 归约72
5.1.5 应对并行性的OpenACC72
5.2 重建编译器73
5.2.1 编译器可以做什么74
5.2.2 编译器不能做什么75
5.3 编译OpenACC76
5.3.1 代码预备工作77
5.3.2 调度77
5.3.3 串行代码78
5.3.4 用户错误79
5.4 总结80
5.5 练习81
第6章 最佳编程实践83
6.1 通用准则84
6.1.1 最大化设备计算84
6.1.2 优化数据局部性85
6.2 最大化设备计算86
6.2.1 原子操作86
6.2.2 kernels构件与parallel构件87
6.2.3 运行时调优和if子语88
6.3 优化数据局部性89
6.3.1 最少化数据传输89
6.3.2 数据复用和present子语90
6.3.3 非结构化数据生命周期91
6.3.4 指定数组形状92
6.4 典型示例92
6.4.1 背景知识:热力学报表92
6.4.2 基线CPU版本的实现93
6.4.3 性能分析93
6.4.4 使用OpenACC进行加速94
6.4.5 优化数据局部性96
6.4.6 性能研究97
6.5 总结98
6.6 练习98
第7章 OpenACC与性能可移植性99
7.1 挑战99
7.2 目标架构100
7.2.1 特定平台的编译101
7.2.2 x86_64多核与NVIDIA101
7.3 OpenACC性能可移植性101
7.3.1 OpenACC内存模型102
7.3.2 内存架构102
7.3.3 代码生成102
7.3.4 性能可移植性的数据布局103
7.4 代码重构以实现性能可移植性103
7.4.1 HACCmk103
7.4.2 面向多种架构105
7.4.3 openACC在NVIDIA K20x GPU上的应用106
7.4.4 openACC在AMD Bulldozer多核上的应用107
7.5 总结108
7.6 练习109
第8章 并行编程的其他方式111
8.1 编程模型111
8.1.1 OpenACC113
8.1.2 OpenMP113
8.1.3 CUDA114
8.1.4 OpenCL114
8.1.5 C++ AMP115
8.1.6 Kokkos115
8.1.7 RAJA116
8.1.8 线程构建模块116
8.1.9 C++17116
8.1.10 Fortran 2008117
8.2 编程模型组件117
8.2.1 并行循环118
8.2.2 并行归约119
8.2.3 紧密嵌套循环121
8.2.4 分层并行性(非紧密嵌套循环)122
8.2.5 任务并行性124
8.2.6 数据分配125
8.2.7 数据传输126
8.3 案例研究127
8.3.1 串行实现128
8.3.2 OpenACC实现129
8.3.3 OpenMP实现130
8.3.4 CUDA实现131
8.3.5 Kokkos实现134
8.3.6 TBB实现136
8.3.7 一些性能数字138
8.4 总结140
8.5 练习140
第9章 OpenACC与互操作性142
9.1 在OpenACC中调用原生设备代码142
9.1.1 示例:使用DFT进行图像滤波143
9.1.2 host_data导语及use_device子语145
9.1.3 目标平台相关API例程147
9.2 在原生设备代码中调用OpenACC149
9.3 OpenACC互操作性高级话题149
9.3.1 acc_map_data149
9.3.2 在OpenACC kernel中调用CUDA设备例程151
9.4 总结152
9.5 练习152
第10章 OpenACC高级特性153
10.1 异步操作153
10.1.1 OpenACC异步编程155
10.1.2 软件流水线160
10.2 多设备编程168
10.2.1 多设备流水线169
10.2.2 OpenACC与MPI172
10.3 总结176
10.4 练习176
第11章 使用OpenACC的创新研究思路,第1部分177
11.1 神威OpenACC177
11.1.1 SW26010众核处理器178
11.1.2 神威太湖之光中的内存模型178
11.1.3 执行模型180
11.1.4 数据管理181
11.1.5 总结183
11.2 针对加速器的嵌套循环编译器转换184
11.2.1 OpenUH编译器基础架构185
11.2.2 循环调度转换187
11.2.3 循环调度的性能评估190
11.2.4 OpenUH的其他研究课题193
第12章 使用OpenACC的创新研究思路,第2部分194
12.1 一个基于导语的高性能可重构计算框架194
12.1.1 介绍195
12.1.2 OpenACC到FPGA的基线翻译196
12.1.3 用于高效FPGA编程的OpenACC扩展和优化198
12.1.4 评估203
12.1.5 总结207
12.2 使用XcalableACC编程加速集群207
12.2.1 XcalableMP介绍208
12.2.2 XcalableACC:当XcalableMP遇上OpenACC211
12.2.3 Omni编译器的实现213
12.2.4 在HA-PACS上的性能评估215
12.2.5 总结220
|
內容試閱:
|
欢迎阅读本书。这本书汇聚了来自学术界、公共研究和工业界的19位资深作者的前沿观点。作者的共同目标是汇编一系列章节,对使用OpenACC进行并行编程做系统介绍。我们设计这些章节是为了提供借鉴,以便在课堂中使用。因此,亲爱的读者,你也许是一名报名参加这个可能令人生畏的并行编程课程学习的学生。请放心,这门课你选对了。计算机设备不再属于非并行类型,并行编程比以往更加重要。
本书的组织结构
我们的目标是循序渐进地介绍OpenACC是如何表达并行性的,以避免让你承受过多的学习压力。以下是本书的组织方式。
前3章介绍了OpenACC背后的概念和OpenACC开发工具。
第4~7章带你了解第一个真实世界的OpenACC程序,并揭示OpenACC程序编译背后的魔力,从而引入更多概念。
第8~10章涵盖高级主题,例如OpenACC的替代方案、底层设备交互、多设备编程和任务并行性。
第11章和第12章探讨了OpenACC实现潜在新语言特性的各种研究领域。
大多数章节在最后包含一些练习来回顾章节内容。这些解决方案以及章节中使用的代码示例可在https:github.comOpenACCUserGroupopenacc_concept_strategies_book在线获得。此URL还提供了每章的幻灯片,供授课教师参考。
|
|