OpenACC高性能并行编程:概念与策略

OpenACC高性能并行编程:概念与策略
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Sunita Chandrasekaran)
2019-04
ISBN: 9787111623236
定价: 79.00
6人买过
  • 本书是介绍大规模并行编程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 kernels 5 
    1.2.2 parallel 6 
    1.2.3 loop 7 
    1.2.4 routine 7 
    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程序中的bug 42 
    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章 编译OpenACC 67 
    5.1 并行性的挑战 68 
    5.1.1 并行硬件 68 
    5.1.2 映射循环 69 
    5.1.3 内存层次结构 71 
    5.1.4 归约 72 
    5.1.5 应对并行性的OpenACC 72 
    5.2 重建编译器 73 
    5.2.1 编译器可以做什么 74 
    5.2.2 编译器不能做什么 75 
    5.3 编译OpenACC 76 
    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多核与NVIDIA 101 
    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 HACCmk 103 
    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 OpenACC 113 
    8.1.2 OpenMP 113 
    8.1.3 CUDA 114 
    8.1.4 OpenCL 114 
    8.1.5 C++ AMP 115 
    8.1.6 Kokkos 115 
    8.1.7 RAJA 116 
    8.1.8 线程构建模块 116 
    8.1.9 C++17 116 
    8.1.10 Fortran 2008 117 
    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 在原生设备代码中调用OpenACC 149 
    9.3 OpenACC互操作性高级话题 149 
    9.3.1 acc_map_data 149 
    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与MPI 172 
    10.3 总结 176 
    10.4 练习 176 
    第11章 使用OpenACC的创新研究思路,第1部分 177 
    11.1 神威OpenACC 177 
    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遇上OpenACC 211 
    12.2.3 Omni编译器的实现 213 
    12.2.4 在HA-PACS上的性能评估 215 
    12.2.5 总结 220
  • 内容简介:
    本书是介绍大规模并行编程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 kernels 5 
    1.2.2 parallel 6 
    1.2.3 loop 7 
    1.2.4 routine 7 
    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程序中的bug 42 
    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章 编译OpenACC 67 
    5.1 并行性的挑战 68 
    5.1.1 并行硬件 68 
    5.1.2 映射循环 69 
    5.1.3 内存层次结构 71 
    5.1.4 归约 72 
    5.1.5 应对并行性的OpenACC 72 
    5.2 重建编译器 73 
    5.2.1 编译器可以做什么 74 
    5.2.2 编译器不能做什么 75 
    5.3 编译OpenACC 76 
    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多核与NVIDIA 101 
    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 HACCmk 103 
    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 OpenACC 113 
    8.1.2 OpenMP 113 
    8.1.3 CUDA 114 
    8.1.4 OpenCL 114 
    8.1.5 C++ AMP 115 
    8.1.6 Kokkos 115 
    8.1.7 RAJA 116 
    8.1.8 线程构建模块 116 
    8.1.9 C++17 116 
    8.1.10 Fortran 2008 117 
    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 在原生设备代码中调用OpenACC 149 
    9.3 OpenACC互操作性高级话题 149 
    9.3.1 acc_map_data 149 
    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与MPI 172 
    10.3 总结 176 
    10.4 练习 176 
    第11章 使用OpenACC的创新研究思路,第1部分 177 
    11.1 神威OpenACC 177 
    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遇上OpenACC 211 
    12.2.3 Omni编译器的实现 213 
    12.2.4 在HA-PACS上的性能评估 215 
    12.2.5 总结 220
查看详情
相关图书 / 更多
OpenACC高性能并行编程:概念与策略
OpenCV轻松入门:面向Python(第2版)
李立宗
OpenACC高性能并行编程:概念与策略
OpenShift开发指南(原书第2版)
[美]约书亚·伍德 (美)布赖恩·坦努斯 著
OpenACC高性能并行编程:概念与策略
OpenCV 4.5计算机视觉开发实战:基于Python
朱文伟 李建英
OpenACC高性能并行编程:概念与策略
OpenCV计算机视觉项目实战(Python版)
洪锦魁
OpenACC高性能并行编程:概念与策略
OpenHarmony轻量设备开发理论与实战
齐耀龙
OpenACC高性能并行编程:概念与策略
OpenCV图像处理技术(微课版)
傅贤君
OpenACC高性能并行编程:概念与策略
OpenCV入门与技术实践
罗刚
OpenACC高性能并行编程:概念与策略
OpenCV图像处理实战
贾睿 主编;北京博海迪信息科技有限公司 组编
OpenACC高性能并行编程:概念与策略
OpenHarmony嵌入式系统原理与应用——基于RK2206芯片(微课视频版)
薛小铃
OpenACC高性能并行编程:概念与策略
OpenFOAM多物理场计算基础与建模
杨文明 编著
OpenACC高性能并行编程:概念与策略
OpenStack云计算平台搭建与管理(微课版)
姚骏屏 何桂兰
OpenACC高性能并行编程:概念与策略
OpenCV 4.0+Python机器学习与计算机视觉实战
[印]梅努阿·吉沃吉安 著;黄进青 译
您可能感兴趣 / 更多
OpenACC高性能并行编程:概念与策略
宇宙视觉史:从宇宙大爆炸到时间的尽头
[美]查尔斯·刘 著;高爽 译者;[美]马克西姆· 马洛维奇科 绘;未读 出品
OpenACC高性能并行编程:概念与策略
写出我心 普通人如何通过写作表达自己(平装本)
[美]娜塔莉·戈德堡(Natalie Goldberg)
OpenACC高性能并行编程:概念与策略
写出我心3 写作疗愈的真正秘密
[美]娜塔莉·戈德堡(Natalie Goldberg)
OpenACC高性能并行编程:概念与策略
神套路:为什么我们总被带节奏(狂热与网红时代醍醐灌顶之作,教给普通人安身立命的不二法门!)
[美]阿里·阿莫萨维 著;[哥伦比亚]亚历杭德罗·希拉尔多 绘
OpenACC高性能并行编程:概念与策略
阿伦森自传
[美]埃利奥特·阿伦森(Elliot Aronson) 著;沈捷 译;湛庐文化 出品
OpenACC高性能并行编程:概念与策略
街头官僚:公共服务中的个人困境
[美]迈克尔·李普斯基(Michael Lipsky)
OpenACC高性能并行编程:概念与策略
史前至蒙古帝国时期的内欧亚大陆史
[美]大卫·克里斯蒂安 著;潘玲 译;杨建华 校
OpenACC高性能并行编程:概念与策略
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
OpenACC高性能并行编程:概念与策略
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
OpenACC高性能并行编程:概念与策略
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
OpenACC高性能并行编程:概念与策略
自律我也能做到(全9册)
[美]康妮·科维尔·米勒 著;[阿根廷]维多利亚·阿萨纳利 绘
OpenACC高性能并行编程:概念与策略
你在等什么?
[美]斯科特·明钦 著;[中]易万 译;[美]马特 ·斐兰 绘