为你推荐
译者序
序言
前言
致谢
第一部分 做好学习OpenMP的准备
第1章 并行计算
1.1 并行计算的基本概念
1.2 并发性的兴起
1.3 并行硬件
1.3.1 多处理器系统
1.3.2 图形处理单元
1.3.3 分布式内存集群
1.4 多处理器计算机的并行软件
第2章 性能语言
2.1 基础:FLOPS、加速比和并行效率
2.2 阿姆达尔定律
2.3 并行开销
2.4 强扩展与弱扩展
2.5 负载均衡
2.6 用roofline模型理解硬件
第3章 什么是OpenMP
3.1 OpenMP的历史
3.2 通用核心
3.3 OpenMP的主要组件
第二部分 OpenMP通用核心
第4章 线程和OpenMP编程模型
4.1 OpenMP概述
4.2 OpenMP程序的结构
4.3 线程和fork-join模式
4.4 使用线程
4.4.1 SPMD设计模式
4.4.2 伪共享
4.4.3 同步
4.5 结束语
第5章 并行化循环
5.1 共享工作循环构造
5.2 组合式并行共享工作循环构造
5.3 归约
5.4 循环调度
5.4.1 静态调度
5.4.2 动态调度
5.4.3 选择一个调度
5.5 隐式栅栏和nowait子句
5.6 带有并行循环共享工作的Pi程序
5.7 一种循环级并行策略
5.8 结束语
第6章 OpenMP数据环境
6.1 缺省存储属性
6.2 修改存储属性
6.2.1 shared子句
6.2.2 private子句
6.2.3 firstprivate子句
6.2.4 default子句
6.3 数据环境的例子
6.3.1 数据作用域测试
6.3.2 曼德勃罗集的面积
6.3.3 重新审视Pi循环的例子
6.4 数组和指针
6.5 结束语
第7章 OpenMP任务
7.1 任务的必要性
7.2 显式任务
7.3 第一个例子:薛定谔程序
7.4 single构造
7.5 使用任务
7.5.1 什么时候任务完成
7.6 任务的数据环境
7.6.1 任务的缺省数据作用域
7.6.2 利用任务重新审视链表程序
7.7 利用任务的基础设计模式
7.7.1 分而治之模式
7.8 结束语
第8章 OpenMP内存模型
8.1 重新审视内存层次结构
8.2 OpenMP通用核心内存模型
8.3 使用共享内存
8.4 结束语
第9章 通用核心回顾
9.1 管理线程
9.2 共享工作构造
9.3 组合式并行共享工作循环构造
9.4 OpenMP任务
9.5 同步和内存一致性模型
9.6 数据环境子句
9.7 归约子句
9.8 环境变量和运行时库例程
第三部分 超越通用核心
第10章 超越通用核心的多线程
10.1 用于OpenMP通用核心构造的附加子句
10.1.1 并行构造
10.1.2 共享工作循环构造
10.1.3 任务构造
10.2 通用核心中缺失的多线程功能
10.2.1 threadprivate
10.2.2 master
10.2.3 atomic
10.2.4 OMP_STACKSIZE
10.2.5 运行时库例程
10.3 结束语
第11章 同步和OpenMP内存模型
11.1 内存一致性模型
11.2 成对同步
11.3 锁以及如何使用它
11.4 C++内存模型和OpenMP
11.5 结束语
第12章 超越OpenMP通用核心的硬件
12.1 非统一内存访问系统
12.1.1 在NUMA系统上工作
12.1.2 嵌套并行构造
12.1.3 检查线程亲和力
12.1.4 小结:线程亲和力和数据局部性
12.2 SIMD
12.3 设备构造
12.4 结束语
第13章 继续OpenMP的学习
13.1 来自ARB的程序员资源
13.2 如何阅读OpenMP规范
13.2.1 带有所有正式术语的OpenMP
13.3 OpenMP规范的结构
13.4 结束语
术语表
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜