图书介绍

CUDAC编程权威指南【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

CUDAC编程权威指南
  • (美)程润伟(John Cheng),(美)马克斯·格罗斯曼(Max Grossman),(美)泰·麦克切尔(Ty McKercher)著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111565475
  • 出版时间:2017
  • 标注页数:412页
  • 文件大小:67MB
  • 文件页数:434页
  • 主题词:计算机图形学-指南;C语言-程序设计-指南

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

CUDAC编程权威指南PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 基于CUDA的异构并行计算1

1.1并行计算1

1.1.1串行编程和并行编程2

1.1.2并行性3

1.1.3计算机架构4

1.2异构计算6

1.2.1异构架构7

1.2.2异构计算范例9

1.2.3 CUDA:一种异构计算平台10

1.3用GPU输出Hello World12

1.4使用CUDA C编程难吗15

1.5总结16

1.6习题16

第2章CUDA编程模型18

2.1 CUDA编程模型概述18

2.1.1 CUDA编程结构19

2.1.2内存管理20

2.1.3线程管理24

2.1.4启动一个CUDA核函数29

2.1.5编写核函数30

2.1.6验证核函数31

2.1.7处理错误32

2.1.8编译和执行32

2.2给核函数计时35

2.2.1用CPU计时器计时35

2.2.2用nvprof工具计时39

2.3组织并行线程40

2.3.1使用块和线程建立矩阵索引40

2.3.2使用二维网格和二维块对矩阵求和44

2.3.3使用一维网格和一维块对矩阵求和47

2.3.4使用二维网格和一维块对矩阵求和48

2.4设备管理50

2.4.1使用运行时API查询GPU信息50

2.4.2确定最优GPU53

2.4.3使用nvidia-smi查询GPU信息53

2.4.4在运行时设置设备54

2.5总结54

2.6习题55

第3章CUDA执行模型56

3.1 CUDA执行模型概述56

3.1.1 GPU架构概述57

3.1.2 Fermi架构59

3.1.3 Kepler架构61

3.1.4配置文件驱动优化65

3.2理解线程束执行的本质67

3.2.1线程束和线程块67

3.2.2线程束分化69

3.2.3资源分配74

3.2.4延迟隐藏76

3.2.5占用率78

3.2.6同步81

3.2.7可扩展性82

3.3并行性的表现83

3.3.1用nvprof检测活跃的线程束84

3.3.2用nvprof检测内存操作85

3.3.3增大并行性86

3.4避免分支分化88

3.4.1并行归约问题88

3.4.2并行归约中的分化89

3.4.3改善并行归约的分化93

3.4.4交错配对的归约95

3.5展开循环97

3.5.1展开的归约97

3.5.2展开线程的归约99

3.5.3完全展开的归约101

3.5.4模板函数的归约102

3.6动态并行104

3.6.1嵌套执行105

3.6.2在GPU上嵌套Hello World106

3.6.3嵌套归约109

3.7总结113

3.8习题113

第4章 全局内存115

4.1 CUDA内存模型概述115

4.1.1内存层次结构的优点116

4.1.2 CUDA内存模型117

4.2内存管理124

4.2.1内存分配和释放124

4.2.2内存传输125

4.2.3固定内存127

4.2.4零拷贝内存128

4.2.5统一虚拟寻址133

4.2.6统一内存寻址134

4.3内存访问模式135

4.3.1对齐与合并访问135

4.3.2全局内存读取137

4.3.3全局内存写入145

4.3.4结构体数组与数组结构体147

4.3.5性能调整151

4.4核函数可达到的带宽154

4.4.1内存带宽154

4.4.2矩阵转置问题155

4.5使用统一内存的矩阵加法167

4.6总结171

4.7习题172

第5章 共享内存和常量内存174

5.1 CUDA共享内存概述174

5.1.1共享内存175

5.1.2共享内存分配176

5.1.3共享内存存储体和访问模式176

5.1.4配置共享内存量181

5.1.5同步183

5.2共享内存的数据布局185

5.2.1方形共享内存185

5.2.2矩形共享内存193

5.3减少全局内存访问199

5.3.1使用共享内存的并行归约199

5.3.2使用展开的并行归约202

5.3.3使用动态共享内存的并行归约204

5.3.4有效带宽205

5.4合并的全局内存访问205

5.4.1基准转置内核205

5.4.2使用共享内存的矩阵转置207

5.4.3使用填充共享内存的矩阵转置210

5.4.4使用展开的矩阵转置211

5.4.5增大并行性214

5.5常量内存215

5.5.1使用常量内存实现一维模板215

5.5.2与只读缓存的比较217

5.6线程束洗牌指令219

5.6.1线程束洗牌指令的不同形式220

5.6.2线程束内的共享数据222

5.6.3使用线程束洗牌指令的并行归约226

5.7总结227

5.8习题228

第6章 流和并发230

6.1流和事件概述231

6.1.1 CUDA流231

6.1.2流调度234

6.1.3流的优先级235

6.1.4 CUDA事件235

6.1.5流同步237

6.2并发内核执行240

6.2.1非空流中的并发内核240

6.2.2 Fermi GPU上的虚假依赖关系242

6.2.3使用OpenMP的调度操作244

6.2.4用环境变量调整流行为245

6.2.5 GPU资源的并发限制246

6.2.6默认流的阻塞行为247

6.2.7创建流间依赖关系248

6.3重叠内核执行和数据传输249

6.3.1使用深度优先调度重叠249

6.3.2使用广度优先调度重叠252

6.4重叠GPU和CPU执行254

6.5流回调255

6.6总结256

6.7习题257

第7章 调整指令级原语258

7.1 CUDA指令概述259

7.1.1浮点指令259

7.1.2内部函数和标准函数261

7.1.3原子操作指令262

7.2程序优化指令264

7.2.1单精度与双精度的比较264

7.2.2标准函数与内部函数的比较266

7.2.3了解原子指令272

7.2.4综合范例277

7.3总结279

7.4习题280

第8章GPU加速库和OpenACC281

8.1 CUDA库概述282

8.1.1 CUDA库支持的作用域283

8.1.2通用的CUDA库工作流283

8.2 cuSPARSE库285

8.2.1 cuSPARSE数据存储格式286

8.2.2用cuSPARSE进行格式转换289

8.2.3 cuSPARSE功能示例289

8.2.4 cuSPARSE发展中的重要主题291

8.2.5 cuSPARSE小结291

8.3 cuBLAS库292

8.3.1管理cuBLAS数据293

8.3.2 cuBLAS功能示例294

8.3.3 cuBLAS发展中的重要主题295

8.3.4 cuBLAS小结296

8.4 cuFFT库296

8.4.1使用cuFFT API296

8.4.2 cuFFT功能示例298

8.4.3 cuFFT小结299

8.5 cuRAND库299

8.5.1拟随机数或伪随机数的选择299

8.5.2 cuRAND库概述300

8.5.3 cuRAND介绍303

8.5.4 cuRAND发展中的重要主题306

8.6 CUDA 6.0中函数库的介绍307

8.6.1 Drop-In库307

8.6.2多GPU库308

8.7 CUDA函数库的性能研究310

8.7.1 cuSPARSE与MKL的比较310

8.7.2 cuBLAS与MKL BLAS的比较311

8.7.3 cuFFT与FFTW及MKL的比较311

8.7.4 CUDA库性能小结312

8.8 OpenACC的使用312

8.8.1 OpenACC计算指令的使用315

8.8.2 OpenACC数据指令的使用321

8.8.3 OpenACC运行时API325

8.8.4 OpenACC和CUDA库的结合327

8.8.5 OpenACC小结328

8.9总结329

8.10习题329

第9章多GPU编程331

9.1从一个GPU到多GPU332

9.1.1在多 GPU上执行333

9.1.2点对点通信334

9.1.3多GPU间的同步335

9.2多GPU间细分计算336

9.2.1在多设备上分配内存336

9.2.2单主机线程分配工作337

9.2.3编译和执行337

9.3多GPU上的点对点通信338

9.3.1实现点对点访问338

9.3.2点对点的内存复制339

9.3.3统一虚拟寻址的点对点内存访问341

9.4多GPU上的有限差分342

9.4.1二维波动方程的模板计算342

9.4.2多GPU程序的典型模式343

9.4.3多GPU上的二维模板计算344

9.4.4重叠计算与通信347

9.4.5编译和执行348

9.5跨GPU集群扩展应用程序350

9.5.1 CPU到CPU的数据传输351

9.5.2使用传统MPI在GPU和GPU间传输数据353

9.5.3使用CUDA-aware MPI进行GPU到GPU的数据传输356

9.5.4使用CUDA-aware MPI进行节点内GPU到GPU的数据传输357

9.5.5调整消息块大小358

9.5.6使用GPUDirect RDMA技术进行GPU到GPU的数据传输359

9.6总结361

9.7习题362

第10章 程序实现的注意事项364

10.1 CUDA C的开发过程364

10.1.1 APOD开发周期365

10.1.2优化因素367

10.1.3 CUDA代码编译370

10.1.4 CUDA错误处理373

10.2配置文件驱动优化374

10.2.1使用nvprof寻找优化因素375

10.2.2使用nvvp指导优化379

10.2.3 NVIDIA工具扩展381

10.3 CUDA调试383

10.3.1内核调试383

10.3.2内存调试390

10.3.3调试小结395

10.4将C程序移植到CUDA C的案例研究396

10.4.1评估crypt396

10.4.2并行crypt397

10.4.3优化crypt398

10.4.4部署crypt404

10.4.5移植crypt小结407

10.5总结407

10.6习题407

附录 推荐阅读409

热门推荐