前 言
第1章 X86 SSE/AVX指令集
1.1 SSE内置函数
1.1.1 算术运算
1.1.2 逻辑运算
1.1.3 比较
1.1.4 加载和存储
1.2 AVX内置函数
1.2.1 算术运算
1.2.2 逻辑运算
1.2.3 比较
1.2.4 加载和存储
1.3 优化实例及分析
1.3.1 如何测得CPU的浮点峰值性能
1.3.2 积分计算圆周率π
1.3.3 稀疏矩阵向量乘法
1.3.4 二维单通道图像离散卷积
1.4 本章小结
第2章 ARM NEON SIMD 指令优化
2.1 NEON指令集综述
2.2 ARM A15 处理器性能
2.3 NEON 支持的操作
2.3.1 基本算术运算
2.3.2 基本比较运算
2.3.3 基本数据类型转换及舍入运算
2.3.4 基本位运算
2.3.5 基本逻辑运算
2.3.6 基本设置加载存储操作
2.3.7 特殊操作
2.4 应用实例
2.4.1 彩色图像转灰度图像
2.4.2 矩阵转置
2.4.3 矩阵乘
2.5 本章小结
第3章 OpenMP程序设计
3.1 OpenMP编程模型
3.1.1 OpenMP执行模型
3.1.2 OpenMP存储器模型
3.2 环境变量
3.3 函数
3.3.1 普通函数
3.3.2 锁函数
3.4 OpenMP编译制导语句
3.4.1 常用的OpenMP构造
3.4.2 常用的OpenMP子句
3.5 OpenMP异构并行计算
3.6 OpenMP程序优化
3.6.1 OpenMP程序优化准则
3.6.2 OpenMP并行优化实例
3.7 本章小结
第4章 基于GPU的异构并行计算环境:CUDA与OpenCL
4.1 GPU计算概述
4.1.1 GPU计算历史
4.1.2 CUDA概述
4.1.3 OpenCL概述
4.2 异构并行计算模型
4.2.1 平台模型
4.2.2 执行模型
4.2.3 存储器模型
4.2.4 编程模型
4.3 C语言接口
4.3.1 OpenCL C语言
4.3.2 CUDA C语言
4.4 基于GPU的异构并行计算性能优化
4.4.1 总体优化准则
4.4.2 全局存储器优化
4.4.3 合并访问
4.4.4 局部存储器
4.4.5 存储体冲突
4.4.6 常量存储器优化
4.4.7 CUDA纹理存储器优化
4.4.8 寄存器及私有存储器优化
4.4.9 工作组数目及大小
4.4.10 占用率
4.4.11 指令优化
4.4.12 分支优化
4.4.13 数据传输优化
4.5 GPU与CPU精度差别
4.6 矩阵转置
4.6.1 初次实现
4.6.2 满足合并访问的实现
4.6.3 没有存储体冲突的实现
4.7 矩阵乘法
4.7.1 初次实现
4.7.2 矩阵分块实现
4.8 本章小结
第5章 OpenACC
5.1OpenACC 编程模型
5.1.1 执行模型
5.1.2存储器模型
5.2编译制导语句
5.2.1kernels构造
5.2.2parallel构造
5.2.3 线程配置相关子句
5.2.4data构造
5.2.5loop构造
5.2.6 atomic构造
5.2.7 dtype子句
5.2.8reduction子句
5.2.9变量可见性子句
5.2.10if子句
5.2.11async和wait
5.3OpenACC和CUDA协作
5.3.1CUDA使用OpenACC生产的数据
5.3.2 OpenACC使用CUDA生产的数据
5.4两小时性能提升10倍
5.5本章小结
第6章 多核向量处理器架构及OpenCL程序映射
6.1多核向量处理器架构
6.1.1Intel Haswell CPU 架构
6.1.2ARM A15 多核向量处理器架构
6.1.3AMD GCN GPU架构
6.1.4NVIDIA Kepler 和 Maxwell GPU架构
6.2OpenCL 程序在多核向量处理器上的映射
6.2.1OpenCL程序在多核向量CPU上的映射
6.2.2OpenCL程序在NVIDIA GPU上的映射
6.2.3OpenCL程序在AMD GCN上的映射
6.3本章小结
第7章 利用多种技术优化图像处理中的算法性能
7.1图像滤波
7.1.1均值滤波
7.1.2中值滤波
7.2图像直方图
7.2.1OpenMP 实现
7.2.2CUDA 实现
7.3曼德勃罗集
7.3.1串行算法
7.3.2不适合进行向量化
7.3.3OpenMP实现
7.3.4CUDA 实现
7.4本章小结
第8章 利用多种技术优化线性代数中的算法性能
8.1两向量距离
8.1.1串行代码
8.1.2循环展开代码
8.1.3AVX指令加速
8.1.4NEON 实现
8.1.5CUDA实现
8.2稠密矩阵与向量乘法
8.2.1串行算法
8.2.2AVX 指令加速
8.2.3NEON 实现
8.2.4CUDA 实现
8.2.5OpenMP 实现
8.3本章小结