资源详情

GPU编程实战 基于Python和CUDA(异步图书出品)

GPU编程实战 基于Python和CUDA(异步图书出品)-电子书下载


作者: 布莱恩·图奥迈宁(Brian Tuomanen)
出版社: 人民邮电出版社
出品方: 异步图书
译者: 韩波
出版年: 2022-6
页数: 244
定价: 79.90元
装帧: 平装
ISBN: 9787115560919

下载次数:24


本站推荐

书籍资料

  • 内容简介
  • 作者介绍
  • 书籍目录

本书旨在引导读者基于 Python 和CUDA 的 GPU 编程开发高性能的应用程序,先后介绍了为什么要学习 GPU 编程、搭建 GPU编程环境、PyCUDA入门等内容,以及 CUDA 代码的调试与性能分析、通过 Scikit-CUDA 模块使用 CUDA 库、实现深度神经网络、CUDA 性能优化等内容。学完上述内容,读者应能从零开始构建基于 GPU的深度神经网络,甚至能够解决与数据科学和 GPU编程高性能计算相关的问题。
本书适合对GPU 编程与 CUDA编程感兴趣的读者阅读。读者应掌握必要的基本数学概念,且需要具备一定的 Python编程经验。

Brian Tuomanen 博士自2014年以来,一直从事CUDA 和GPU 编程方面的工作。他在美国西雅图华盛顿大学(University of Washington)获得了电气工程专业的学士学位,在攻读数学专业的硕士学位之前,从事过软件工程方面的工作。后来,他在哥伦比亚的密苏里大学攻读数学博士学位,在那里与 GPU 编程"邂逅"——GPU编程当时主要用于研究科学问题。Tuomanen 博十曾经在美国陆军研究实验室以GPU编程为题发表演讲,后来在美国马里兰州的一家初创公司负责GPU集成和开发方面的工作。目前,他在西雅图担任微软的机器学习专家(Azure CSI)。

第1章为什么要学习GPU编程1
1.1技术要求2
1.2并行化与阿姆达尔定律2
1.2.1使用阿姆达尔定律3
1.2.2Mandelbrot集5
1.3对代码进行性能分析7
1.4小结9
1.5习题10
第2章搭建GPU编程环境11
2.1技术要求12
2.2确保拥有合适的硬件12
2.2.1检查硬件(Linux系统)13
2.2.2检查硬件(Windows系统)14
2.3安装GPU驱动程序15
2.3.1安装GPU驱动程序(Linux系统)16
2.3.2安装GPU驱动程序(Windows系统)17
2.4搭建C++编程环境18
2.4.1设置GCC、EclipseIDE和图形处理库(Linux系统)18
2.4.2设置VisualStudio(Windows系统)18
2.4.3安装CUDAToolkit20
2.5为GPU编程设置Python环境21
2.5.1安装PyCUDA(

inux系统)22
2.5.2创建环境启动脚本(Windows系统)22
2.5.3安装PyCUDA(Windows系统)23
2.5.4测试PyCUDA23
2.6小结24
2.7习题25
第3章PyCUDA入门26
3.1技术要求26
3.2查询GPU27
3.3使用PyCUDA的gpuarray类31
3.3.1使用gpuarray在GPU之间传输数据31
3.3.2使用gpuarray进行基本的逐元素算术运算32
3.4使用PyCUDA的ElementwiseKernel执行逐元素运算37
3.4.1重温Mandelbrot集40
3.4.2函数式编程简介44
3.4.3并行化的扫描内核函数和规约内核函数简介45
3.5小结47
3.6习题47
第4章内核函数、线程、线程块与网格49
4.1技术要求50
4.2内核函数50
4.3线程、线程块与网格53
4.4线程同步与线程通信60
4.4.1使用设备函数__syncthreads60
4.4.2使用共享内存63
4.5并行前缀算法65
4.5.1朴素并行前缀算法66
4.5.2包含型并行前缀算法与独占型并行前缀算法69
4.5.3工作高效型并行前缀算法69
4.5.4工作高效型并行前缀算法的实现71
4.6小结74
4.7习题74
第5章流、事件、上下文与并发性76
5.1技术要求77
5.2CUDA设备同步77
5.2.1使用PyCUDA流类78
5.2.2通过CUDA流实现并发版本的LIFE82
5.3事件85
5.4上下文89
5.4.1同步当前上下文90
5.4.2手动创建上下文91
5.4.3主机端多进程与多线程技术92
5.4.4实现主机端并发的多上下文93
5.5小结97
5.6习题97
第6章CUDA代码的调试与性能分析99
6.1技术要求100
6.2在CUDA内核函数中使用printf函数100
6.3CUDAC编程简介106
6.4利用NsightIDE开发和调试CUDAC代码113
6.4.1在Windows平台上的VisualStudio中使用Nsight113
6.4.2在Linux平台中使用Nsight和Eclipse117
6.4.3借助Nsight理解CUDA的线程束锁步特性120
6.5使用NVIDIA性能分析工具——nvprof与VisualProfiler122
6.6小结124
6.7习题125
第7章通过Scikit-CUDA模块使用CUDA库126
7.1技术要求127
7.2安装Scikit-CUDA127
7.3利用cuBLAS库处理基本线性代数运算128
7.3.1利用cuBLAS库处理第1级AXPY运算128
7.3.2其他第1级cuBLAS函数130
7.3.3利用cuBLAS库处理第2级GEMV运算131
7.3.4利用cuBLAS中的第3级GEMM操作测量GPU性能133
7.4利用cuFFT库进行快速傅里叶变换136
7.4.1一维快速傅里叶变换示例137
7.4.2使用FFT进行卷积操作138
7.4.3利用cuFFT进行二维卷积139
7.5通过Scikit-CUDA使用cuSolver144
7.5.1奇异值分解144
7.5.2奇异值分解在主成分分析中的应用146
7.6小结147
7.7习题148
第8章CUDA设备函数库与Thrust库149
8.1技术要求150
8.2cuRAND设备函数库150
8.3CUDAMathAPI155
8.3.1定积分概述155
8.3.2用蒙特卡罗方法计算定积分156
8.3.3编写测试用例162
8.4CUDAThrust库164
8.5小结168
8.6习题169
第9章实现深度神经网络170
9.1技术要求170
9.2人工神经元与神经网络171
9.3softmax层的实现177
9.4交叉熵损失函数的实现179
9.5序贯网络的实现180
9.5.1推理方法的实现182
9.5.2梯度下降法184
9.5.3数据的规范化和归一化189
9.6Iris数据集190
9.7小结192
9.8习题193
第10章应用编译好的GPU代码194
10.1通过Ctypes模块启动编译好的代码194
10.2编译并运行纯PTX代码201
10.3为CUDADriverAPI编写包装器203
10.4小结210
10.5习题211
第11章CUDA性能优化212
11.1动态并行性212
11.2向量化数据类型与内存访问217
11.3线程安全的原子操作218
11.4线程束洗牌220
11.5内联PTX汇编223
11.6经过优化的数组求和函数227
11.7小结231
11.8习题231
第12章未来展望233
12.1深入了解CUDA和GPGPU编程技术234
12.1.1多GPU系统234
12.1.2集群计算和消息传递接口234
12.1.3OpenCL和PyOpenCLCUDA234
12.2图形领域235
12.2.1OpenGL235
12.2.2DirectX12235
12.2.3Vulkan236
12.3机器学习与计算机视觉236
12.3.1基础知识236
12.3.2cuDNN236
12.3.3Tensorflow与Keras237
12.3.4Chainer237
12.3.5OpenCV237
12.4区块链技术237
12.5小结238
12.6习题238
习题提示239
第1章为什么要学习GPU编程239
第2章搭建GPU编程环境239
第3章PyCUDA入门240
第4章内核函数、线程、线程块与网格240
第5章流、事件、上下文与并发性241
第6章CUDA代码的调试与性能分析241
第7章通过Scikit-CUDA模块使用CUDA库242
第8章CUDA设备函数库与Thrust库242
第9章实现深度神经网络243
第10章应用编译好的GPU代码243
第11章CUDA性能优化244
第12章未来展望244