目录
序
前言
第1章 多核向量处理器架构 1
1.1 众核系统结构 2
1.2 众核架构的一致性 3
1.3 多核向量处理器架构 5
1.3.1 Intel Haswell CPU架构 6
1.3.2 ARM A15多核向量处理器架构 10
1.3.3 AMD GCN GPU架构 12
1.3.4 NVIDIA Kepler和Maxwell GPU架构 15
1.4 Intel MIC架构 21
1.4.1 整体架构 22
1.4.2 计算单元 22
1.4.3 存储器单元 24
1.4.4 MIC架构上一些容易成为瓶颈的设计 25
1.5 OpenCL程序在多核向量处理器上的映射 26
1.5.1 OpenCL程序在多核向量CPU上的映射 26
1.5.2 OpenCL程序在NVIDIA GPU上的映射 28
1.5.3 OpenCL程序在AMD GCN上的映射 34
1.6 OpenCL程序在各众核硬件上执行的区别 39
1.7 众核编程模式 42
1.8 众核性能优化 42
1.9 MIC和GPU编程比较 43
1.10 本章小结 43
第2章 常见线性代数算法优化 44
2.1 稀疏矩阵与向量乘法 44
2.1.1 稀疏矩阵的存储格式 45
2.1.2 CSR 格式稀疏矩阵与向量乘法 46
2.1.3 ELL格式稀疏矩阵与向量乘 56
2.2 对称矩阵与向量乘积 58
2.2.1 串行代码 59
2.2.2 向量化对称矩阵与向量乘积 60
2.2.3 OpenMP 并行化 60
2.2.4 CUDA 代码 60
2.3 三角线性方程组的解法 63
2.3.1 串行算法 64
2.3.2 串行算法优化 65
2.3.3 AVX 优化实现 65
2.3.4 NEON 优化实现 66
2.3.5 如何提高并行度 67
2.3.6 CUDA 算法实现 68
2.4 矩阵乘法 71
2.4.1 AVX指令计算矩阵乘法 72
2.4.2 NEON指令计算矩阵乘法 75
2.4.3 GPU计算矩阵乘法 77
2.5 本章小结 81
第3章 优化偏微分方程的数值解法 82
3.1 热传递问题 83
3.1.1 C代码及性能 84
3.1.2 OpenMP代码及性能 85
3.1.3 OpenACC代码及性能 87
3.1.4 CUDA代码 88
3.2 简单三维Stencil 91
3.2.1 串行实现 92
3.2.2 Stencil在X86处理器上实现的困境 93
3.2.3 CUDA实现 93
3.3 本章小结 96
第4章 优化分子动力学算法 97
4.1 简单搜索的实现 98
4.1.1 串行代码 99
4.1.2 向量化实现分析 100
4.1.3 OpenMP实现 101
4.1.4 CUDA实现 102
4.2 范德华力计算 104
4.2.1 串行实现 104
4.2.2 向量化实现分析 105
4.2.3 OpenMP实现 106
4.2.4 CUDA实现 106
4.2.5 如何提高缓存的利用 108
4.3 键长伸缩力计算 108
4.3.1 串行实现 109
4.3.2 向量化实现 111
4.3.3 OpenMP实现 111
4.3.4 CUDA实现 114
4.4 径向分布函数计算 116
4.4.1 串行实现 117
4.4.2 向量化实现 118
4.4.3 OpenMP实现 118
4.4.4 CUDA实现 121
4.5 本章小结 126
第5章 机器学习算法 127
5.1 k—means算法 128
5.1.1 计算流程 128
5.1.2 计算元素所属分类 129
5.1.3 更新分类中心 136
5.1.4 入口函数 140
5.2 KNN算法 142
5.2.1 计算步骤 142
5.2.2 相似度计算 143
5.2.3 求前k个相似度最大元素 144
5.2.4 统计所属分类 145
5.3 二维卷积 146
5.3.1 X86实现 147
5.3.2 ARM实现 152
5.3.3 CUDA实现 155
5.4 四维卷积 162
5.4.1 X86实现 163
5.4.2 ARM 实现 169
5.4.3 CUDA实现 172
5.5 多GPU并行优化深度学习软件Caffe 176
5.5.1 为什么要使用多GPU并行Caffe 177
5.5.2 AlexNet示例 177
5.5.3 Caffe的主要计算流程 180
5.5.4 多GPU并行卷积神经网络的方式 185
5.5.5 多GPU并行Caffe实践 187
5.6 本章小结 190
· · · · · · (
收起)