内容简介
第1章 GPU计算的发展历程
1.1 计算机图形学的发展
1.2 图形流水线
1.3 GPU的发展过程
1.4 GPU通用计算的发展历程
参考文献
第2章 现代图形处理器的体系结构
2.1 计算机体系结构基础
2.2 GPU的设计思想
2.3 NVIDIA图形处理器
2.3.1 总体体系结构
2.3.2 流多处理器
2.3.3 流多处理器的扩展
2.3.4 存储器
2.4 AMD Graphics Core Next图形处理器体系结构
2.4.1 GCN计算单元
2.4.2 GCN缓存
2.4.3 GCN GPU
2.5 Imagination PowerVR移动图形处理器体系结构
参考文献
第3章 异构系统体系结构和融合处理器
3.1 HSA基本概念
3.2 异构系统体系结构存储器模型
3.2.1 虚拟存储器的地址空间
3.2.2 缓存一致性
3.2.3 内存一致性
3.3 异构任务队列式调度机制
3.4 任务抢占和内容切换
3.5 HSA中间语言
3.6 AMD的HSA硬件
习题
参考文献
第4章 OpenCL基本概念
4.1 OpenCL程序的工作流程
4.2 OpenCL平台与设备
4.3 上下文、命令队列、kernel函数
4.4 存储对象
4.5 Hello World例程
习题
参考文献
第5章 OpenCL并行编程基础
5.1 并行线程组织
5.2 OpenCL存储器模型
5.3 数据类型
5.4 运算符
5.5 函数
5.6 矢量相加例程
5.7 矩阵相乘的OpenCL例程
5.7.1 矩阵相乘OpenCL代码
5.7.2 矩阵相乘分块计算的OpenCL代码
5.7.3 提高计算密度的分块矩阵相乘
5.7.4 使用矢量计算的分块矩阵相乘
习题
参考文献
第6章 OpenCL事件和队列
6.1 命令、命令队列和事件
6.2 事件的定义和基本用法
6.3 事件对象与用户事件
6.4 双设备队列管理例程
6.5 使用事件进行性能剖析例程
习题
参考文献
第7章 OpenCL 2.0高级特征
7.1 共享虚拟存储器
7.1.1 粗粒度缓冲区共享虚拟存储器
7.1.2 细粒度缓冲区共享虚拟存储器
7.1.3 细粒度系统级共享虚拟存储器
7.2 管道
7.3 嵌套并行
7.4 工作组函数
7.5 通用地址空间
习题
参考文献
第8章 并行程序设计方法
8.1 并行程序设计的复杂性
8.2 程序性能剖析
8.2.1 程序执行时间
8.2.2 程序性能剖析的概念
8.2.3 使用gprof剖析程序性能
8.2.4 解读性能剖析结果
8.3 寻找并行性
8.3.1 可行性分析
8.3.2 数据依赖性
8.4 并行化实例
8.4.1 顺序逻辑仿真算法
8.4.2 同步并行逻辑仿真
8.4.3 保守型并行逻辑仿真
8.5 并行化设计方法学
8.6 降低并行程序的开发难度
习题
参考文献和深入阅读
第9章 N体问题
9.1 串行算法
9.2 GPU端OpenCL程序
9.3 CPU端OpenCL程序
9.4 双GPU的OpenCL程序
习题
参考文献
第10章 归约问题
10.1 直观并行归约算法
10.2 减少闲置线程
10.3 改进局部内存访问
10.4 避免内存访问冲突
10.5 减少同步操作
10.6 优化顺序和并行工作比例
习题
参考文献
第11章 快速傅里叶变换
11.1 傅里叶变换原理
11.2 快速傅里叶变换算法
11.3 简化基-2 FFT算法内核
11.4 通用基-2 FFT算法内核
11.4.1 Twiddle因子
11.4.2 数据访问模式
11.4.3 64点FFT
习题
参考文献
第12章 稀疏矩阵——向量积
12.1 稀疏矩阵数据格式
12.2 对角稀疏矩阵
12.3 COO格式稀疏矩阵
12.4 CSR格式稀疏矩阵
12.5 ELL格式稀疏矩阵
习题
参考文献
第13章 直方图
13.1 直方图的计算
13.2 简单的并行直方图计算
13.3 数据值范围较小情形下的直方图算法
13.4 数据值范围较大情形下的加权直方图算法
习题
参考文献
第14章 光线追踪算法的OpenCL实现
14.1 光线追踪算法综述
14.2 光线追踪流水线解析
14.3 OpenCL光线追踪程序
14.3.1 代码框架
14.3.2 主机端代码及详解
14.3.3 设备端代码及详解
参考文献