目录



第1章GPGPU概述

1.1GPGPU与并行计算机

1.1.1并行体系结构

1.1.2GPU与CPU体系结构对比

1.2GPGPU发展概述

1.2.1GPU

1.2.2从GPU到GPGPU

1.3现代GPGPU产品

1.3.1NVIDIA GPGPU

1.3.2AMD GPGPU

1.3.3Intel GPGPU

1.3.4其他GPU

参考文献

第2章GPGPU编程模型

2.1计算模型

2.1.1数据并行和线程

2.1.2主机设备端和内核函数

2.2线程模型

2.2.1线程组织与数据索引

2.2.2线程分配与执行

2.2.3线程模型小结

2.3存储模型

2.3.1多样的存储器类型

2.3.2存储资源与线程并行度

2.4线程同步与通信模型

2.4.1同步机制

2.4.2协作组

2.4.3流与事件

2.4.4原子操作

2.5CUDA指令集概述

2.5.1中间指令PTX 

2.5.2机器指令SASS 

参考文献





第3章GPGPU控制核心架构

3.1GPGPU架构概述

3.1.1CPUGPGPU异构计算系统

3.1.2GPGPU架构

3.1.3扩展讨论: 架构特点和局限性

3.2GPGPU指令流水线

3.2.1前段: 取指与译码

3.2.2中段: 调度与发射

3.2.3后段: 执行与写回

3.2.4扩展讨论: 线程束指令流水线

3.3线程分支

3.3.1谓词寄存器

3.3.2SIMT堆栈

3.3.3分支屏障

3.3.4扩展讨论: 更高效的线程分支执行

3.4线程束调度

3.4.1线程束并行、调度与发射

3.4.2基本的调度策略

3.4.3扩展讨论: 线程束调度策略优化

3.5记分牌

3.5.1数据相关性

3.5.2GPGPU中的记分牌

3.5.3扩展讨论: 记分牌设计优化

3.6线程块分配与调度

3.6.1线程块并行、分配与调度

3.6.2基本的线程块分配与调度策略

3.6.3扩展讨论: 线程块分配与调度策略优化

参考文献

第4章GPGPU存储架构

4.1GPGPU存储系统概述

4.1.1CPU的层次化存储

4.1.2GPGPU的存储层次

4.2寄存器文件

4.2.1并行多板块结构

4.2.2板块冲突和操作数收集器

4.2.3操作数并行访问时的相关性冒险

4.2.4扩展讨论: 寄存器文件的优化设计

4.3可编程多处理器内的存储系统

4.3.1数据通路概述

4.3.2共享存储器访问

4.3.3L1高速缓存访问

4.3.4纹理缓存

4.3.5扩展讨论: 片上存储系统的优化设计

4.4可编程多处理器外的存储系统

4.4.1存储分区单元

4.4.2L2缓存

4.4.3帧缓存单元

4.4.4全局存储器

4.5存储架构的优化设计

4.5.1片上存储资源融合

4.5.2技术对比与小结

参考文献

第5章GPGPU运算单元架构

5.1数值的表示

5.1.1整型数据

5.1.2浮点数据

5.1.3扩展讨论: 多样的浮点数据表示

5.2GPGPU的运算单元

5.2.1整型运算单元

5.2.2浮点运算单元

5.2.3特殊功能单元

5.2.4张量核心单元

5.3GPGPU的运算单元架构

5.3.1运算单元的组织和峰值算力

5.3.2实际的指令吞吐率

5.3.3扩展讨论: 脉动阵列结构

参考文献

第6章GPGPU张量核心架构

6.1深度神经网络的计算

6.1.1深度神经网络的计算特征

6.1.2卷积运算方式

6.2张量核心架构

6.2.1张量核心架构特征概述

6.2.2Volta架构中的张量核心

6.2.3张量核心的发展

6.2.4扩展讨论: 张量核心对稀疏的支持

6.3神经网络计算的软件支持

6.4深度学习评价基准——MLPerf

参考文献

第7章总结与展望

7.1本书内容总结

7.2GPGPU发展展望