图书介绍
GPU编程与优化 大众高性能计算pdf电子书版本下载
- 方民权著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302446422
- 出版时间:2016
- 标注页数:417页
- 文件大小:152MB
- 文件页数:434页
- 主题词:图象处理-程序设计
PDF下载
下载说明
GPU编程与优化 大众高性能计算PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一篇 理论篇 3
第1章 高性能计算概述 3
1.1 高性能计算概念辨析 3
1.1.1 并行计算、高性能计算和超级计算 3
1.1.2 超级计算机与超级计算中心 4
1.2 计算科学 5
1.3 高性能计算发展史 5
1.4 高性能计算简介 6
1.5 向量机与阵列机 8
1.6 本章小结 9
第2章 GPU概述 10
2.1 GPU是什么 10
2.2 协处理器 10
2.3 GPU与显卡的关系 11
2.4 GPU/显卡购买注意事项 11
2.5 为什么要学GPU编程 12
2.6 GPU与CPU辨析 13
2.7 GPU发展简史 14
2.8 GPU编程方法 14
2.9 CPU/GPU异构系统 16
第3章 GPU硬件架构 17
3.1 GPU架构 17
3.1.1 Tesla架构 18
3.1.2 Fermi架构 20
3.1.3 Kepler架构 21
3.1.4 Maxwell架构 23
3.1.5 Pascal架构 24
3.2 Kernel的硬件映射 28
3.3 GPU存储体系 29
3.4 GPU计算能力 30
第4章 GPU软件体系 33
4.1 GPU软件生态系统 33
4.2 CUDA Toolkit 34
4.2.1 NVCC编译器 34
4.2.2 cuobjdump 35
4.3 CUDA环境安装 36
4.3.1 Windows 7安装CUDA 4.2 36
4.3.2 Linux下安装CUDA 38
第5章 CUDA C编程 41
5.1 CUDA编程模型 41
5.2 CUDA编程七步曲 42
5.3 驱动API与运行时API 42
5.4 CUDA运行时函数 43
5.4.1 设备管理函数 43
5.4.2 存储管理函数 45
5.4.3 数据传输函数 48
5.4.4 线程管理函数 51
5.4.5 流管理函数 52
5.4.6 事件管理函数 52
5.4.7 纹理管理函数 53
5.4.8 执行控制函数 55
5.4.9 错误处理函数 55
5.4.10 图形学互操作函数 57
5.4.11 OpenGL互操作函数 58
5.4.12 Direct3D互操作函数 59
5.5 CUDA C语言扩展 60
5.6 grid-block-thread三维模型 61
第二篇 入门篇 67
第6章 向量加法 67
6.1 向量加法及其串行代码 67
6.2 单block单thread向量加 68
6.3 单block多thread向量加 68
6.4 多block多thread向量加 69
6.5 CUBLAS库向量加法 70
6.6 实验结果分析与结论 71
6.6.1 本书实验平台 71
6.6.2 实验结果 71
6.6.3 结论 71
6.7 知识点总结 72
6.8 扩展练习 75
第7章 归约:向量内积 76
7.1 向量内积及其串行代码 76
7.2 单block分散归约向量内积 77
7.3 单block低线程归约向量内积 78
7.4 多block向量内积(CPU二次归约) 79
7.5 多block向量内积(GPU二次归约) 81
7.6 基于原子操作的多block向量内积 81
7.7 计数法实现多block向量内积 84
7.8 CUBLAS库向量内积 85
7.9 实验结果与结论 86
7.9.1 实验结果 86
7.9.2 结论 86
7.10 归约的深入优化探讨 87
7.10.1 block数量和thread数量对归约性能的影响 87
7.10.2 算术运算优化 88
7.10.3 减少同步开销 89
7.10.4 循环展开 90
7.10.5 总结 91
7.11 知识点总结 91
7.12 扩展练习 94
第8章 矩阵乘法 95
8.1 矩阵乘法及其3种串行代码 95
8.1.1 一般矩阵乘法 95
8.1.2 循环交换矩阵乘法 97
8.1.3 转置矩阵乘法 98
8.1.4 实验结果与最优串行矩阵乘 99
8.2 grid线程循环矩阵乘法 100
8.3 block线程循环矩阵乘法 101
8.4 行共享存储矩阵乘法 101
8.5 棋盘阵列矩阵乘法 103
8.6 判断移除 105
8.7 CUBLAS矩阵乘法 106
8.8 实验结果分析与结论 108
8.8.1 矩阵乘精度分析 108
8.8.2 实验结果分析 110
8.8.3 浮点运算能力分析 111
8.9 行共享存储矩阵乘法改进 111
8.10 知识点总结 113
8.11 扩展练习 115
第9章 矩阵转置 116
9.1 矩阵转置及其串行代码 116
9.2 1D矩阵转置 117
9.3 2D矩阵转置 118
9.4 共享存储2D矩阵转置 119
9.5 共享存储2D矩阵转置diagonal优化 120
9.6 实验结果分析与结论 121
9.7 共享存储2D矩阵转置的深入优化 122
9.8 知识点总结 124
9.9 扩展练习 125
第三篇 提高篇 129
第10章 卷积 129
10.1 卷积及其串行实现 129
10.1.1 一维卷积 129
10.1.2 二维卷积 131
10.2 GPU上1D卷积 134
10.3 M常量1D卷积 135
10.4 M共享1D卷积 136
10.5 N共享1D卷积 137
10.6 实验结果分析 139
10.6.1 扩展法1D卷积实验结果分析 139
10.6.2 判断法与扩展法1D卷积对比 140
10.6.3 加速比分析 141
10.6.4 线程维度对性能的影响 141
10.7 2D卷积的GPU移植与优化 142
10.7.1 GPU上2D卷积 142
10.7.2 M常量2D卷积 143
10.7.3 M常量N共享2D卷积 143
10.7.4 2D卷积实验结果分析 145
10.8 知识点总结 145
10.9 扩展练习 147
第11章 曼德博罗特集 148
11.1 曼德博罗特集及其串行实现 148
11.2 曼德博罗特集的GPU映射 150
11.3 一些优化尝试及效果 152
11.3.1 访存连续 152
11.3.2 uchar4访存合并 153
11.3.3 4种零拷贝 153
11.3.4 总结分析 155
11.4 计算通信重叠优化 156
11.5 突破kernel执行时间限制 159
11.6 知识点总结 160
11.7 扩展练习 162
第12章 扫描:前缀求和 163
12.1 前缀求和及其串行代码 163
12.2 Kogge-Stone并行前缀和 164
12.2.1 直接Kogge-Stone分段前缀和 164
12.2.2 交错Kogge-Stone分段前缀和 165
12.2.3 完整Kogge-Stone前缀和 166
12.3 Brent-Kung并行前缀和 168
12.3.1 Brent-Kung分段前缀和 169
12.3.2 两倍数据的Brent-Kung分段前缀和 170
12.3.3 避免bank conflict的两倍数据Brent-Kung分段前缀和 171
12.3.4 完整Brent-Kung前缀和 173
12.4 warp分段的Kogge-Stone前缀求和 174
12.5 实验结果分析与结论 177
12.6 知识点总结 179
12.7 扩展练习 180
第13章 排序 181
13.1 串行排序及其性能 181
13.1.1 选择排序 181
13.1.2 冒泡排序 182
13.1.3 快速排序 182
13.1.4 基数排序 183
13.1.5 双调排序网络 185
13.1.6 合并排序 186
13.1.7 串行排序性能对比 187
13.2 基数排序 188
13.2.1 基数排序概述 188
13.2.2 单block基数排序 189
13.2.3 基于thrust库的基数排序 196
13.3 双调排序网络 197
13.3.1 双调排序网络概述 197
13.3.2 单block双调排序网络 199
13.3.3 多block双调排序网络 202
13.4 快速排序 206
13.5 合并排序 207
13.6 实验结果分析与结论 208
13.7 知识点总结 209
13.8 扩展练习 210
第14章 几种简单图像处理 211
14.1 图像直方图统计 211
14.1.1 串行直方图统计 211
14.1.2 并行直方图统计 211
14.1.3 实验结果与分析 212
14.2 中值滤波 213
14.2.1 串行中值滤波 214
14.2.2 1D并行中值滤波 215
14.2.3 共享1D中值滤波 216
14.2.4 双重共享1D中值滤波 218
14.2.5 2D并行中值滤波 221
14.2.6 共享2D中值滤波 222
14.2.7 共享2D中值滤波的改进 227
14.2.8 实验结果与分析 229
14.3 均值滤波 231
14.3.1 串行均值滤波 231
14.3.2 并行均值滤波 232
14.3.3 实验结果与分析 233
第四篇 核心篇 237
第15章 GPU执行核心 237
15.1 概述 237
15.2 算术运算支持 238
15.2.1 整数运算 238
15.2.2 浮点运算 239
15.3 算术运算性能 240
15.4 分支处理 242
15.5 同步与测时 246
15.5.1 同步 246
15.5.2 测时 247
15.6 数学函数 247
15.7 warp与block原语 249
15.7.1 warp原语 249
15.7.2 block原语 250
15.8 kernel启动、线程切换和循环处理 251
第16章 GPU存储体系 254
16.1 概述 254
16.2 寄存器 259
16.3 局部存储 261
16.4 共享存储器 264
16.4.1 共享存储使用 264
16.4.2 bank conflict 265
16.4.3 volatile关键字 266
16.4.4 共享存储原子操作 267
16.5 常量存储 268
16.6 全局存储 269
16.6.1 全局存储的使用 269
16.6.2 全局存储的合并访问 271
16.6.3 利用纹理缓存通道访问全局存储 271
16.7 纹理存储 273
16.7.1 CUDA数组 273
16.7.2 纹理存储的操作和限制 274
16.7.3 读取模式、纹理坐标、滤波模式和寻址模式 276
16.7.4 表面存储 278
16.8 主机端内存 281
16.9 零拷贝操作 283
第17章 GPU关键性能测评 284
17.1 GPU性能测评概述 284
17.2 GPU参数获取 286
17.2.1 GPU选择 286
17.2.2 详细设备参数获取 287
17.3 精确测时方法汇总 288
17.3.1 clock测时 289
17.3.2 gettimeofday测时 289
17.3.3 CUDA事件测时 289
17.3.4 cutil库函数测时 290
17.4 GPU预热与启动开销 290
17.5 GPU浮点运算能力 291
17.6 GPU访存带宽 293
17.7 GPU通信带宽 295
17.8 NVIDIA Visual Profiler 296
17.9 程序性能对比约定 298
第18章 CPUs和GPUs协同 299
18.1 协同优化基点 299
18.1.1 CPU并行矩阵乘基点 299
18.1.2 GPU并行矩阵乘基点 300
18.2 CPU/GPU协同 300
18.3 多GPU协同 305
18.3.1 CUDA版本 306
18.3.2 OpenMP+CUDA 308
18.3.3 MPI+CUDA 311
18.4 CPUs/GPUs协同 314
18.4.1 CUDA版本 314
18.4.2 OpenMP+CUDA 319
18.4.3 MPI+OpenMP+CUDA 324
18.5 本章小结 329
附录 333
附录A 判断法1D卷积代码 333
附录A.1 判断法1D卷积basic版 333
附录A.2 判断法1D卷积constant版 334
附录A.3 判断法1D卷积shared版 336
附录A.4 判断法1D卷积cache版 337
附录B 曼德博罗特集的系列优化代码 340
附录B.1 完整版串行C代码 340
附录B.2 cuda_1_0 343
附录B.3 cuda_0_2 345
附录B.4 cuda_zerocopy 346
附录B.5 cuda_1_0_zerocopy 348
附录B.6 cuda_0_0_zerocopy 349
附录B.7 cuda_0_2_zerocopy 351
附录B.8 cuda_2 352
附录B.9 cuda_1_2 354
附录C 几种图像处理完整源码 357
附录C.1 BMP图像读写头文件 357
附录C.2 图像直方图串行代码 373
附录C.3 串行中值滤波代码 374
附录C.4 并行均值滤波相关代码 376
附录D nvprof帮助菜单 383
附录E NVCC帮助菜单 388
附录F 几种排序算法源代码 399
附录F.1 bitonic_sort_block函数 399
附录F.2 GPU快速排序完整代码 400
附录F.3 GPU合并排序完整代码 408
参考文献 417