


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
编程不难(全彩图解 + 微课 + Python编程)(鸢尾花数学大系:从加减乘除到机器学习)
2025-10-27