刘文志编著的这本《并行算法设计与性能优化》主要介绍并行计算相关的算法的设计和并行计算的性能优化技巧,涵盖现代处理器的特性、衡量程序性能的方法、串行代码性能优化、并行编程模型及其环境、并行算法设计、遗留代码的并行处理、并行编程模型、混合并行等核心技法与实践技巧。
《并行算法设计与性能优化》是“并行计算与性能优化”系列的第1本,主要讲解了并行计算的核心理论、算法设计和实践,以及代码的性能优化;第2本和第3本则涵盖了并行编程方法与优化实践、科学计算与企业级应用的并行优化等重要主题,这些内容被许多顶级开发人员视为“不传之秘”。本书作者刘文志是国内顶尖的并行计算专家,曾任英伟达并行计算工程师和百度在线高级研发工程师,在该领域的经验和修为极为深厚,他毫不吝啬地将自己多年的积累呈现在这3本书中,得到了百度深度学习研究院“杰出科学家”吴韧的高度评价和强烈推荐。
本书结合大量示例和伪代码,详细介绍了单核代码的性能优化和向量化技术,在现代多核处理器上如何设计并行算法,以及基于GPU和移动处理器(ARM)的代码性能优化与并行化。
前言
第1章 绪论
1.1 并行和向量化的作用
1.2 为什么要并行或向量化
1.3 为什么向量化或并行难
1.4 并行的替代方法
1.5 进程、线程与处理器
1.6 并行硬件平台
1.7 向量化和多核技术不是万能的
1.8 本章小结
第2章 现代处理器特性
2.1 指令级并行
2.1.1 指令流水线
2.1.2 乱序执行
2.1.3 指令多发射
2.1.4 分支预测
2.1.5 VLIW
2.2 向量化并行
2.2.1 SIMD
2.2.2 SIMT
2.3 线程级并行
2.3.1 内核线程和用户线程
2.3.2 多线程编程库
2.3.3 多核上多线程并行要注意的问题
2.3.4 多线程程序在多核和单核上运行的不同
2.4 缓存
2.4.1 缓存层次结构
2.4.2 缓存一致性
2.4.3 缓冲不命中
2.4.4 写缓存
2.4.5 越过缓存
2.4.6 硬件预取
2.4.7 缓存结构
2.4.8 映射策略
2.5 虚拟存储器和
2.6 NUMA技术
2.7 本章小结
第3章 算法性能和程序性能的度量与分析
3.1 算法分析的性能度量标准
3.1.1 时间复杂度与空间复杂度
3.1.2 实现复杂度
3.2 程序和指令的性能度量标准
3.3 程序性能优化的度量标准
3.3.1 加速比与并行效率
3.3.2 Amdahl定律和Gustafson定律
3.4 程序性能分析实用工具
3.5 本章小结
第4章 串行代码性能优化
4.1 系统级别
4.2 应用级别
……
第5章 依赖分析
第6章 并行编程模型及环境
第7章 并行算法设计方法
第8章 并行算法缺陷
第9章 并行编程模式实践
第10章 如何并行遗留代码
第11章 超级并行
第12章 并行算法设计的一般准则
附录A 整型数据与浮点数据