第0章 本书导读 1
0.1什么是CUDA 1
0.2学习CUDA的“须知” 2
0.3本书的读者对象 3
0.4学习CUDA的必备 3
0.5本书的组织结构 4
0.6本书体例 5
0.7本书代码 6
0.8用户指南 7
0.9历史沿革 8
参考文献 9
第1章 起步 10
1.1运行CUDA样例程序 10
1.1.1在Windows下运行CUDA样例程序 11
1.1.2在Linux下运行CUDA样例程序 13
1.1.3估计“加速效果” 13
1.2运行我们自己的串行程序 14
1.2.1 dist v1应用 15
1.2.2 dist v2应用 16
1.3本章小结 18
1.4推荐项目 18
第2章 CUDA基础知识 19
2.1 CUDA并行模式 19
2.2需要知道的CUDA API和C语言拓展 21
2.3本章小结 23
2.4推荐项目 23
参考文献 24
第3章 从循环到网格 25
3.1并行化dist v1 25
3.2并行化dist v2 29
3.3标准操作流程 33
3.4简化操作流程 33
3.4.1统一内存和托管数组 34
3.4.2使用cudaMallocManaged()实现的距离应用 34
3.5本章小结 36
3.6推荐项目 37
参考文献 38
第4章 二维网格与交互式图形 39
4.1启动二维计算网格 40
4.1.1二维内核启动的语法 41
4.1.2定义二维内核 41
4.1.3 dist 2d 43
4.2通过图形交互实时显示 45
4.3 stability应用程序 54
4.4本章小结 62
4.5推荐项目 62
参考文献 62
第5章 模板与共享内存 64
5.1线程间依赖 64
5.2一维网格上的导数计算 66
5.2.1实现dd_ ld_ global 66
5.2.2实现dd ld shared 69
5.2.3解决二维拉普拉斯方程:heat 2d 72
5.2.4图像边缘锐化:sharpen 83
5.3本章小结 96
5.4推荐项目 97
参考文献 98
第6章 归约与原子操作 99
6.1全局交互的线程 99
6.2实现parallel dot 100
6.3计算整体属性:centroid_2d 106
6.4本章小结 113
6.5推荐项目 113
参考文献 114
第7章 三维数据交互 115
7.1计算三维网格数据:dist 3d 117
7.2查看三维数据并与之交互:vis 3d 119
7.2.1切片法 121
7.2.2体绘制法 124
7.2.3光线投射法 124
7.2.4创建vis 3d应用 126
7.3本章小结 139
7.4推荐项目 139
参考文献 140
第8章 CUDA函数库实践 141
8.1自定义的与现有的 141
8.2 Thrust库 143
8.2.1使用inner product()计算向量的模 144
8.2.2使用transform()计算距离 147
8.2.3使用generate()、transform()以及reduce()对π的值进行估计 151
8.3 cuRAND库 156
8.4 NPP库 158
8.4.1 sharpen_ npp 159
8.4.2更多使用NPP进行的图像处理操作 163
8.5线性代数中的cuSOLVER和cuBLAS实践 166
8.6 cuDNN库 170
8.7 ArrayFire库 171
8.8本章小结 171
8.9推荐项目 171
参考文献 172
第9章 探索CUDA生态系统 174
9.1主要资源的权威列表 174
9.1.1 CUDA空间 174
9.1.2其他的主要网络资源 175
9.1.3在线课程 176
9.1.4 CUDA书籍 176
9.2更多资源 179
9.2.1 CUDA样例 179
9.2.2 CUDA语言和库 179
9.2.3更多的CUDA书籍 179
9.3本章小结 180
9.4推荐项目 180
附录A硬件设置 182
附录B软件设置 189
附录C C语言编程须知 201
附录D CUDA实践技巧:计时、性能分析、错误处理与调试 229