第1章 多核技术导论
1.1 微处理器发展史
1.1.1 计算机与微处理器
1.1.2 4位、8位与16位微处理器
1.1.3 32位微处理器
1.2 并行计算机
1.2.1 并行处理思想与弗林分类
1.2.2 超级计算机
1.3 超大规模集成电路与系统芯片发展
1.3.1 超大规模集成电路技术
1.3.2 系统芯片
1.4 片上多核处理器架构
1.4.1 多核芯片
1.4.2 片上多核处理器体系结构
1.4.3 典型多核芯片架构
1.5 芯片组对多核的支持
1.5.1 固件
1.5.2 EFI对多核支持
1.6 操作系统对多核处理器的支持方法
1.6.1 调度与中断
1.6.2 输入输出系统
1.6.3 存储管理与文件系统
1.6.4 虚拟化技术
1.6.5 典型的支持多核的操作系统
本章小结
第2章 并行计算基础
2.1 并行计算机体系结构
2.1.1 多级存储体系结构
2.1.2 并行计算机访存模型
2.2 并行计算模型
2.2.1 SIMD同步并行计算模型
2.2.2 MIMD异步并行计算模型
2.3 进程
2.3.1 进程
2.3.2 进程间通信
2.3.3 影响通信系统性能的因素
2.4 线程
2.5 并行编程环境
2.6 编程语言与编译器
2.6.1 自动并行
2.6.2 HPF:数据并行编程
2.6.3 OpenMP:共享存储并行编程
2.6.4 小结
2.7 并行计算性能评测
2.7.1 并行程序执行时间
2.7.2 加速比性能定律
2.7.3 并行程序性能评价方法
2.7.4 程序性能优化
2.8 常用并行数值算法
2.8.1 并行矩阵乘法
2.8.2 线性代数方程组并行求解方法
2.8.3 快速傅里叶变换
2.9 并行编译器
2.9.1 流分析
2.9.2 代码优化
2.9.3 代码生成
本章小结
第3章 线程的基本概念
3.1 多线程的概念
3.2 用户级线程和内核级线程
3.3 多线程的映射模型
3.4 线程的生命周期
3.5 多线程环境下的进程控制语义
3.6 线程的同步
3.6.1 互斥量
3.6.2 信号量
3.6.3 条件变量
3.6.4 锁的粒度
3.6.5 死锁、饿死与活锁
本章小结
第4章 Windows多线程编程及调优
4.1 Windows线程库介绍
4.2 使用Win32线程API
4.2.1 线程创建
4.2.2 线程管理
4.2.3 线程终结
4.2.4 Win32多线程的实现
4.3 线程执行和资源存取
4.3.1 Win32线程同步的实现
4.3.2 MFC线程同步的实现
4.3.3 Net Framework线程同步的实现
4.4 多线程调试与优化技术
4.4.1 调试器中的数据
4.4.2 跟踪点/断点
4.4.3 线程命名
4.4.4 调试多线程程序
4.4.5 调试与优化工具
本章小结
第5章 Linux多线程编程
5.1 POSIX线程库Pthreads介绍
5.2 POSIX Pthreads库提供的基本线程的操作
5.2.1 线程的创建
5.2.2 线程的退出
5.2.3 等待线程结束
5.2.4 线程的分离
5.2.5 获得当前线程标志
5.2.6 使用Pthreads基本函数编写的一个程序
5.3 线程的属性
5.4 线程互斥和同步
5.4.1 mutex
5.4.2 条件变量
5.4.3 线程的撤销
5.4.4 POSIX信号量
5.4.5 线程和信号处理
5.5 使用GDB调试线程以及线程的调优
5.6 使用Pthreads库的综合例子
本章小结
第6章 OpenMP多线程编程及性能优化
6.1 OpenMP编程简介
6.1.1 OpenMP多线程编程发展概况
6.1.2 OpenMP多线程编程基础
6.1.3 使用Microsoft Visual Studio.Net 2005编写OpenMP程序
6.1.4 小结
6.2 OpenMP多线程应用程序编程技术
6.2.1 循环并行化
6.2.2 并行区域编程
6.2.3 线程同步
6.3 OpenMP多线程应用程序性能分析
6.3.1 影响性能的主要因素
6.3.2 OpenMP程序性能分析实例
本章小结
第7章 MPI编程及性能优化
7.1 MPI简介
7.1.1 MPI及其历史
7.1.2 典型MPI实现简介
7.1.3 MPI程序特点
7.1.4 本章内容组织
7.2 MPICH的安装和配置
7.2.1 在Linux上安装和配置MPICH
7.2.2 在Windows上安装MPICH2
7.3 MPI编程基础
7.3.1 简单的MPI程序示例
7.3.2 MPI程序的4个基本函数
7.3.3 MPI的点对点通信
7.3.4 消息管理7要素
7.3.5 统计时间
7.3.6 错误管理
7.3.7 小结
7.4 MPI群集通信
7.4.1 同步
7.4.2 广播
7.4.3 聚集
7.4.4 播撒
7.4.5 扩展的聚集和播撒操作
7.4.6 全局交换
7.4.7 规约与扫描
7.4.8 简单示例
7.4.9 小结
7.5 MPI性能分析与优化举例
7.5.1 通信开销的测试
7.5.2 选取计算粒度
7.5.3 聚合消息
7.5.4 解决负载均衡问题
7.5.5 小结
本章小结
第8章 多核软件工具介绍
8.1 C++编译器
8.1.1 编译器对多核的支持
8.1.2 C++编译器实验
8.2 VTune性能分析器
8.2.1 性能分析器功能与使用方法
8.2.2 性能分析器实验
8.3 MKL数学核心函数库
8.3.1 MKL数学核心函数库功能与特性
8.3.2 MKL数学核心函数库性能
8.3.3 MKL数学核心函数库实验
8.4 Thread Checker线程检查器
8.4.1 线程检查器功能与使用
8.4.2 线程检查器实验
8.5 Thread Profiler线程档案器
8.5.1 线程档案器的功能与使用
8.5.2 线程档案器实验
参考文献