目 录 Contents
本书赞誉
致谢
第0章 本书导读1
0.1 什么是CUDA1
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_v125
3.2 并行化dist_v229
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_2d43
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_global66
5.2.2 实现dd_ld_shared69
5.2.3 解决二维拉普拉斯方程:heat_2d72
5.2.4 图像边缘锐化:sharpen83
5.3 本章小结96
5.4 推荐项目97
参考文献98
第6章 归约与原子操作99
6.1 全局交互的线程99
6.2 实现parallel_dot100
6.3 计算整体属性:centroid_2d106
6.4 本章小结113
6.5 推荐项目113
参考文献114
第7章 三维数据交互115
7.1 计算三维网格数据:dist_3d117
7.2 查看三维数据并与之交互:vis_3d119
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_npp159
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
· · · · · · (
收起)