更新时间:2022-12-20 18:31:35
封面
版权信息
版权声明
内容提要
作者简介
审稿人简介
前言
读者对象
本书内容
阅读本书的前提
配套资源解压工具
体例格式
第1章 为什么要学习GPU编程
1.1 技术要求
1.2 并行化与阿姆达尔定律
1.2.1 使用阿姆达尔定律
1.2.2 Mandelbrot集
1.3 对代码进行性能分析
使用cProfile模块
1.4 小结
1.5 习题
第2章 搭建GPU编程环境
2.1 技术要求
2.2 确保拥有合适的硬件
2.2.1 检查硬件(Linux系统)
2.2.2 检查硬件(Windows系统)
2.3 安装GPU驱动程序
2.3.1 安装GPU驱动程序(Linux系统)
2.3.2 安装GPU驱动程序(Windows系统)
2.4 搭建C++编程环境
2.4.1 设置GCC、Eclipse IDE和图形处理库(Linux系统)
2.4.2 设置Visual Studio(Windows系统)
2.4.3 安装CUDA Toolkit
2.5 为GPU编程设置Python环境
2.5.1 安装PyCUDA(Linux系统)
2.5.2 创建环境启动脚本(Windows系统)
2.5.3 安装PyCUDA(Windows系统)
2.5.4 测试PyCUDA
2.6 小结
2.7 习题
第3章 PyCUDA入门
3.1 技术要求
3.2 查询GPU
使用PyCUDA查询GPU
3.3 使用PyCUDA的gpuarray类
3.3.1 使用gpuarray在GPU之间传输数据
3.3.2 使用gpuarray进行基本的逐元素算术运算
3.4 使用PyCUDA的ElementwiseKernel执行逐元素运算
3.4.1 重温Mandelbrot集
3.4.2 函数式编程简介
3.4.3 并行化的扫描内核函数和规约内核函数简介
3.5 小结
3.6 习题
第4章 内核函数、线程、线程块与网格
4.1 技术要求
4.2 内核函数
PyCUDA SourceModule函数
4.3 线程、线程块与网格
康威生命游戏
4.4 线程同步与线程通信
4.4.1 使用设备函数__syncthreads
4.4.2 使用共享内存
4.5 并行前缀算法
4.5.1 朴素并行前缀算法
4.5.2 包含型并行前缀算法与独占型并行前缀算法
4.5.3 工作高效型并行前缀算法
4.5.4 工作高效型并行前缀算法的实现
4.6 小结
4.7 习题
第5章 流、事件、上下文与并发性
5.1 技术要求
5.2 CUDA设备同步
5.2.1 使用PyCUDA流类
5.2.2 通过CUDA流实现并发版本的LIFE
5.3 事件
事件与CUDA流
5.4 上下文
5.4.1 同步当前上下文
5.4.2 手动创建上下文
5.4.3 主机端多进程与多线程技术
5.4.4 实现主机端并发的多上下文
5.5 小结
5.6 习题
第6章 CUDA代码的调试与性能分析
6.1 技术要求
6.2 在CUDA内核函数中使用printf函数
利用printf函数调试代码
6.3 CUDA C编程简介
6.4 利用Nsight IDE开发和调试CUDA C代码
6.4.1 在Windows平台上的Visual Studio中使用Nsight
6.4.2 在Linux平台中使用Nsight和Eclipse
6.4.3 借助Nsight理解CUDA的线程束锁步特性
6.5 使用NVIDIA性能分析工具——nvprof与Visual Profiler
6.6 小结
6.7 习题
第7章 通过Scikit-CUDA模块使用CUDA库
7.1 技术要求
7.2 安装Scikit-CUDA
7.3 利用cuBLAS库处理基本线性代数运算
7.3.1 利用cuBLAS库处理第1级AXPY运算