更新时间:2019-01-04 05:31:14
封面
版权信息
序
前言
第1章 并行编程概览
1.1 加速器产品
1.1.1 英伟达GPU
1.1.2 英特尔至强融核处理器
1.2 并行编程语言
1.3 CUDA C
1.3.1 线程组织方式
1.3.2 运行过程
1.3.3 内存层级
1.3.4 性能优化技术
第2章 OpenACC概览
2.1 OpenACC规范的内容
2.1.1 抽象加速器模型
2.1.2 存储模型
2.1.3 计算执行模型
2.2 OpenACC 2.5规范
第3章 OpenACC计算构件
3.1 条件编译
3.2 导语格式
3.3 计算构件kernels
3.3.1 构件内有1个循环
3.3.2 构件内2个循环
3.3.3 构件内二重嵌套循环
3.3.4 kernels构件内三重嵌套循环
3.4 loop构件
3.4.1 independent子语
3.4.2 reduction归约子语
3.4.3 不常用的子语
3.5 计算构件parallel
3.5.1 gang单独模式
3.5.2 gang分裂模式
3.5.3 二重循环
3.5.4 三重循环
3.6 组合导语
3.7 案例研究:Jacobi迭代
3.7.1 CPU上并行化
3.7.2 GPU上并行化
3.8 原子操作:atomic导语
第4章 数据管理
4.1 数据属性、数据区域和数据生存期
4.2 计算构件的伴随数据区域
4.2.1 引用计数
4.2.2 present子语
4.2.3 copy子语
4.2.4 copyin子语
4.2.5 copyout子语
4.2.6 create子语
4.2.7 数据子语内的子数组
4.2.8 private私有子语
4.2.9 承上私有firstprivate子语
4.2.10 带有预置数据属性的变量
4.2.11 default默认子语
4.2.12 案例研究:Jacobi迭代优化数据传输
4.3 data构件
4.3.1 数据管理功能
4.3.2 deviceptr子语
4.3.3 案例研究:data构件迭代优化Jacobi数据传输
4.4 enter data导语和exit data导语
4.4.1 C++类的数据生存期
4.4.2 传递设备数据指针
4.5 update导语
4.6 declare导语
4.6.1 device_resident子语
4.6.2 create子语
4.6.3 link子语
4.6.4 用法举例
4.7 特定设备的子语
第5章 计算区域内的过程调用
5.1 routine导语
5.2 seq子语(C版)
5.3 seq子语(Fortran版)
5.4 routine(名字)
5.5 bind子语
5.6 用子语指定并行级别
5.6.1 vector级别并行
5.6.2 worker、worker级别并行
5.7 计算圆周率π
第6章 高级特性
6.1 异步操作
6.1.1 async子语
6.1.2 wait子语
6.1.3 wait导语
6.2 设备计算与主机计算重叠
6.3 设备上同时执行多个队列
6.4 重叠计算与数据传输
6.4.1 步骤0:串行代码
6.4.2 步骤1:计算并行化
6.4.3 步骤2:分块计算
6.4.4 步骤3:数据分块传输
6.4.5 步骤4:重叠计算与传输
6.5 双向传输
6.6 多个设备同时运算
6.6.1 环境变量
6.6.2 运行过程中选择设备
6.6.3 OpenMP调动多个设备
第7章 与GPU生态环境互操作