本书内容
第1章“为什么要学习GPU编程”,介绍学习这个领域知识的动机、如何应用阿姆达尔定律,以及评估从串行编程切换到GPU编程后所能带来的性能提升。
第2章“搭建GPU编程环境”,解释如何在Windows和Linux系统下为CUDA编程搭建合适的Python与C++开发环境。
第3章“PyCUDA入门”,展示利用Python语言进行GPU编程时所需的基本技能。本章着重介绍如何使用PyCUDA的gpuarray类与GPU进行数据传输,以及如何使用PyCUDA的ElementwiseKernel函数来编译简单的CUDA内核函数。
第4章“内核函数、线程、线程块与网格”,介绍编写高效CUDA内核函数所需的基础知识。这些内核函数是在GPU上运行的并行函数。本章除了介绍如何编写CUDA设备函数(由CUDA内核直接调用的“串行”函数),还将介绍CUDA的抽象线程块/网格结构及其在启动内核函数方面所发挥的作用。
第5章“流、事件、上下文与并发性”,讲解CUDA流的概念。利用CUDA流,我们可以在GPU上同时启动多个内核函数并实现同步。本章介绍如何使用CUDA事件来计算内核函数的运行时间,以及如何创建和使用CUDA上下文。
第6章“CUDA代码的调试与性能分析”,填补纯CUDA C编程方面的一些空白,并展示如何使用Nsight IDE进行开发和调试,以及如何使用英伟达(后简称NVIDA)公司的性能分析工具。
第7章“通过Scikit-CUDA模块使用CUDA库”,介绍几种可以通过Python Scikit-CUDA模块使用的标准CUDA库,例如cuBLAS、cuFFT和cuSolver库。
第8章“CUDA设备函数库与Thrust库”,演示如何在代码中使用cuRAND和CUDA Math API库,以及如何使用CUDA Thrust C++容器。
第9章“实现深度神经网络”,介绍如何应用前面几章中介绍的知识,从零开始构建一个完整的深度神经网络。
第10章“应用编译好的GPU代码”,展示如何使用PyCUDA和Ctypes,实现Python代码与预编译的GPU代码之间的交互。
第 11 章“CUDA性能优化”,讲解非常底层的各种性能优化技巧,特别是与CUDA相关的技巧,例如向量化内存访问、原子操作、线程束洗牌和使用内联PTX汇编代码。
第12章“未来展望”,给出一些教育规划和职业规划方面的内容。当然,这些都是以扎实掌握GPU编程基础知识为前提的。
最后的“习题提示”针对各章的习题给出了解题思路。