cuda linux 算力_GPU编程与优化:大众高性能计算【PDF】【78.10MB】

本书深入浅出地介绍了GPU编程,包括理论基础、CUDA环境搭建、CUDA C编程、GPU硬件架构、软件体系等内容。通过实例演示了向量加法、归约、矩阵乘法等常见计算任务的GPU实现与优化,旨在帮助读者掌握GPU编程和性能提升技巧。适合计算机专业学生和GPU开发人员参考。
摘要由CSDN通过智能技术生成

内容简介

本书第一篇系统地介绍GPU编程的相关知识,帮助读者快速入门,并构建GPU知识体系;第二篇和第三篇给出大量实例,对每个实例进行循序渐进的并行和优化实践,为读者提供GPU编程和优化参考;第四篇总结影响GPU性能的关键要素(执行核心和存储体系),量化测评GPU的核心性能参数,给出CPU/GPU异构系统上覆盖完全的各种混合并行模式及其实践,帮助读者真正透彻理解GPU。 本书适合作为计算机及相关专业的教材,也可作为GPU程序开发人员和科研人员的参考书。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。

目录

第一篇理论篇

第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.1GPU是什么10

2.2协处理器10

2.3GPU与显卡的关系11

2.4GPU/显卡购买注意事项11

2.5为什么要学GPU编程12

2.6GPU与CPU辨析13

2.7GPU发展简史14

2.8GPU编程方法14

2.9CPU/GPU异构系统16

第3章GPU硬件架构17

3.1GPU架构17

3.1.1Tesla架构18

3.1.2Fermi架构20

3.1.3Kepler架构21

3.1.4Maxwell架构23

3.1.5Pascal架构243.2Kernel的硬件映射28

3.3GPU存储体系29

3.4GPU计算能力30

GPU编程与优化——大众高性能计算目录第4章GPU软件体系33

4.1GPU软件生态系统33

4.2CUDA Toolkit34

4.2.1NVCC编译器34

4.2.2cuobjdump35

4.3CUDA环境安装36

4.3.1Windows 7安装CUDA 4.236

4.3.2Linux下安装CUDA38

第5章CUDA C编程41

5.1CUDA编程模型41

5.2CUDA编程七步曲42

5.3驱动API与运行时API42

5.4CUDA运行时函数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.11OpenGL互操作函数58

5.4.12Direct3D互操作函数59

5.5CUDA C语言扩展60

5.6gridblockthread三维模型61

第二篇入门篇

第6章向量加法67

6.1向量加法及其串行代码67

6.2单block单thread向量加68

6.3单block多thread向量加68

6.4多block多thread向量加69

6.5CUBLAS库向量加法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.8CUBLAS库向量内积85

7.9实验结果与结论86

7.9.1实验结果86

7.9.2结论86

7.10归约的深入优化探讨87

7.10.1block数量和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.2grid线程循环矩阵乘法100

8.3block线程循环矩阵乘法101

8.4行共享存储矩阵乘法101

8.5棋盘阵列矩阵乘法103

8.6判断移除105

8.7CUBLAS矩阵乘法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.21D矩阵转置117

9.32D矩阵转置118

9.4共享存储2D矩阵转置119

9.5共享存储2D矩阵转置diagonal优化120

9.6实验结果分析与结论121

9.7共享存储2D矩阵转置的深入优化122

9.8知识点总结124

9.9扩展练习125

第三篇提高篇

第10章卷积129

10.1卷积及其串行实现129

10.1.1一维卷积129

10.1.2二维卷积131

10.2GPU上1D卷积134

10.3M常量1D卷积135

10.4M共享1D卷积136

10.5N共享1D卷积137

10.6实验结果分析139

10.6.1扩展法1D卷积实验结果分析139

10.6.2判断法与扩展法1D卷积对比140

10.6.3加速比分析141

10.6.4线程维度对性能的影响141

10.72D卷积的GPU移植与优化142

10.7.1GPU上2D卷积142

10.7.2M常量2D卷积143

10.7.3M常量N共享2D卷积143

10.7.42D卷积实验结果分析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.2uchar4访存合并153

11.3.34种零拷贝153

11.3.4总结分析155

11.4计算通信重叠优化156

11.5突破kernel执行时间限制159

11.6知识点总结160

11.7扩展练习162

第12章扫描: 前缀求和163

12.1前缀求和及其串行代码163

12.2KoggeStone并行前缀和164

12.2.1直接KoggeStone分段前缀和164

12.2.2交错KoggeStone分段前缀和165

12.2.3完整KoggeStone前缀和166

12.3BrentKung并行前缀和168

12.3.1BrentKung分段前缀和169

12.3.2两倍数据的BrentKung分段前缀和170

12.3.3避免bank conflict的两倍数据BrentKung分段前缀和171

12.3.4完整BrentKung前缀和173

12.4warp分段的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.21D并行中值滤波215

14.2.3共享1D中值滤波216

14.2.4双重共享1D中值滤波218

14.2.52D并行中值滤波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

第四篇核心篇

第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.7warp与block原语249

15.7.1warp原语249

15.7.2block原语250

15.8kernel启动、线程切换和循环处理251

第16章GPU存储体系254

16.1概述254

16.2寄存器259

16.3局部存储261

16.4共享存储器264

16.4.1共享存储使用264

16.4.2bank conflict265

16.4.3volatile关键字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.1CUDA数组273

16.7.2纹理存储的操作和限制274

16.7.3读取模式、纹理坐标、滤波模式和寻址模式276

16.7.4表面存储278

16.8主机端内存281

16.9零拷贝操作283

第17章GPU关键性能测评284

17.1GPU性能测评概述284

17.2GPU参数获取286

17.2.1GPU选择286

17.2.2详细设备参数获取287

17.3精确测时方法汇总288

17.3.1clock测时289

17.3.2gettimeofday测时289

17.3.3CUDA事件测时289

17.3.4cutil库函数测时290

17.4GPU预热与启动开销290

17.5GPU浮点运算能力291

17.6GPU访存带宽293

17.7GPU通信带宽295

17.8NVIDIA Visual Profiler296

17.9程序性能对比约定298

第18章CPUs和GPUs协同299

18.1协同优化基点299

18.1.1CPU并行矩阵乘基点299

18.1.2GPU并行矩阵乘基点300

18.2CPU/GPU协同300

18.3多GPU协同305

18.3.1CUDA版本306

18.3.2OpenMP+CUDA308

18.3.3MPI+CUDA311

18.4CPUs/GPUs协同314

18.4.1CUDA版本314

18.4.2OpenMP+CUDA319

18.4.3MPI+OpenMP+CUDA324

18.5本章小结329

附录

附录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.2cuda_1_0343

附录B.3cuda_0_2345

附录B.4cuda_zerocopy346

附录B.5cuda_1_0_zerocopy348

附录B.6cuda_0_0_zerocopy349

附录B.7cuda_0_2_zerocopy351

附录B.8cuda_2352

附录B.9cuda_1_2354

附录C几种图像处理完整源码357

附录C.1BMP图像读写头文件357

附录C.2图像直方图串行代码373

附录C.3串行中值滤波代码374

附录C.4并行均值滤波相关代码376

附录Dnvprof帮助菜单383

附录ENVCC帮助菜单388

附录F几种排序算法源代码399

附录F.1bitonic_sort_block函数399

附录F.2GPU快速排序完整代码400

附录F.3GPU合并排序完整代码408

参考文献417

文档截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值