书籍详情
异构系统体系结构:原理、模型及应用
作者:[美] 胡文美(Wen-mei W.Hwu) 著,方娟 蔡旻 译
出版社:机械工业出版社
出版时间:2018-09-01
ISBN:9787111606697
定价:¥59.00
购买这本书可以去
内容简介
本书为我们呈现了异构系统架构(HSA)的关键技术、实现方法和案例应用。首先回顾异构并行处理的发展进程、相关问题,分析HSA相对于其他技术的优势。之后深入探讨了运行时、内存模型、队列、上下文交换、架构队列语言、模拟器、工具链等问题。后选取三个实际案例,基于C++应用程序,说明了HSA如何能够显著提升程序性能。
作者简介
:作者简介:胡文美(Wen-mei W. Hwu) MulticoreWare公司联合创始人兼CTO,现任美国伊利诺伊大学厄巴纳-香槟分校(UIUC)电气与计算机工程系教授,兼任并行计算研究中心(Microsoft和Intel联合资助)首席科学家,以及全球CUDA卓越中心(NVIDIA资助)首席研究员。胡教授是IEEE和ACM会士,在编译器设计、计算机体系结构、微体系结构和并行计算方面贡献卓著。:译者简介:方娟北京工业大学计算机学院教授,计算机系统结构系主任。长期从事计算机体系结构领域的教学和科研工作,近年来致力于异构多核体系结构的研究。
目录
出版者的话
译者序
推荐序
前言
作者简介
第1章 引言 1
第2章 HSA 概述 5
2.1 GPU计算简史:HSA解决的问题 5
2.2 HSA的支柱 9
2.2.1 HSA内存模型 9
2.2.2 HSA排队模型 9
2.2.3 HSAIL虚拟ISA 10
2.2.4 HSA上下文切换 10
2.3 HSA规范 10
2.3.1 HSA平台系统体系结构规范 10
2.3.2 HSA运行时规范 10
2.3.3 HSA程序员参考手册—HSAIL SPEC 11
2.4 HSA软件 11
2.5 HSA基金会 12
2.6 小结 13
第3章 HSAIL——虚拟并行ISA 14
3.1 引言 14
3.2 编译流程示例 15
3.3 HSAIL执行模型 16
3.4 HSAIL指令集简介 17
3.4.1 原子操作 18
3.4.2 寄存器 18
3.4.3 分段 19
3.4.4 波前和通道 20
3.5 HSAIL机器模型和配置文件 21
3.6 HSAIL编译流程 22
3.7 HSAIL编译工具 23
3.7.1 编译器框架 23
3.7.2 CL离线编译 24
3.7.3 HSAIL汇编器/反汇编器 25
3.7.4 ISA和机器码汇编器/反汇编器 25
3.8 小结 25
第4章 HSA运行时 26
4.1 引言 26
4.2 HSA核心运行时API 28
4.2.1 运行时的初始化和关闭 28
4.2.2 运行时的通知 29
4.2.3 系统和HSA代理信息 29
4.2.4 信号 30
4.2.5 队列 31
4.2.6 体系结构排队语言 31
4.2.7 内存 32
4.2.8 代码对象和可执行文件 34
4.3 HSA运行时扩展 35
4.3.1 HSAIL 终止化 35
4.3.2 图像和采样器 35
4.4 小结 37
参考文献 38
第5章 HSA 内存模型 39
5.1 引言 39
5.2 HSA内存结构 40
5.2.1 分段 41
5.2.2 平面寻址 42
5.2.3 共享虚拟寻址 42
5.2.4 所有权 43
5.2.5 图像内存 43
5.3 HSA内存一致性基础 43
5.3.1 背景:顺序一致性 44
5.3.2 背景:冲突和竞争 45
5.3.3 单一内存范围的HSA内存模型 45
5.3.4 多个内存范围的HSA内存模型 48
5.3.5 内存段 51
5.3.6 汇总:HSA竞争自由 51
5.3.7 附加观察和注意事项 52
5.4 HSA内存模型中的高级一致性 52
5.4.1 松弛原子 52
5.4.2 所有权和范围界限 54
5.5 小结 54
参考文献 55
第6章 HSA 排队模型 56
6.1 引言 56
6.2 用户模式队列 56
6.3 体系结构排队语言 59
6.3.1 包的类型 60
6.3.2 创建数据包 63
6.4 包的提交与调度 64
6.5 小结 70
参考文献 70
第7章 编译器技术 71
7.1 引言 71
7.2 C++ AMP简介 71
7.2.1 C++ AMP array_view 73
7.2.2 C++ AMP parallel_for_each或内核调用 73
7.3 将HSA作为编译器目标 74
7.4 将关键的C++ AMP构造映射到HSA 75
7.5 C++ AMP编译流程 77
7.6 编译生成的C++ AMP代码 78
7.7 C++ AMP中平铺的编译器支持 80
7.7.1 划分计算域 81
7.7.2 指定地址空间和屏障 81
7.8 内存段注释 82
7.9 针对HSA的通用C++ 84
7.10 平台原子的编译器支持 86
7.11 新建/删除操作符的编译器支持 91
7.11.1 实现具有平台原子性的新建/删除操作符 92
7.11.2 将新建/删除返回的地址提升到全局内存段 94
7.11.3 基于等待 API /信号HSAIL指令改进新建/删除操作符 94
7.12 小结 96
参考文献 96
第8章 应用用例:平台原子性 97
8.1 引言 97
8.2 HSA中的原子性 98
8.3 任务队列系统 100
8.3.1 静态执行 100
8.3.2 动态执行 101
8.3.3 HSA任务队列系统 101
8.3.4 评估 104
8.4 广度优先搜索 107
8.4.1 传统实现 109
8.4.2 HSA实现 110
8.4.3 评估 112
8.5 数据布局转换 113
8.5.1 使用PTTWAC算法进行SoA-ASTA转换 115
8.5.2 PTTWAC的HSA实现 116
8.5.3 评估 116
8.6 小结 118
致谢 118
参考文献 118
第9章 HSA模拟器 120
9.1 在Multi2Sim中模拟HSA 120
9.1.1 引言 120
9.1.2 Multi2Sim-HSA 121
9.1.3 HSAIL 宿主机 HSA 122
9.1.4 HSA 运行时 124
9.1.5 仿真器设计 124
9.1.6 日志与调试 125
9.1.7 Mulit2Sim-HSA路线图 126
9.1.8 安装与支持 126
9.2 HSAemu仿真HSA 127
9.2.1 引言 127
9.2.2 建模的HSA组件 128
9.2.3 HSAemu的设计 129
9.2.4 多线程HSA GPU仿真器 131
9.2.5 剖析、调试与性能模型 132
9.3 softHSA模拟器 133
9.3.1 引言 133
9.3.2 高层次设计 133
9.3.3 创建与测试模拟器 134
9.3.4 使用LLVM HSA模拟器进行调试 135
参考文献 137
索引 139
译者序
推荐序
前言
作者简介
第1章 引言 1
第2章 HSA 概述 5
2.1 GPU计算简史:HSA解决的问题 5
2.2 HSA的支柱 9
2.2.1 HSA内存模型 9
2.2.2 HSA排队模型 9
2.2.3 HSAIL虚拟ISA 10
2.2.4 HSA上下文切换 10
2.3 HSA规范 10
2.3.1 HSA平台系统体系结构规范 10
2.3.2 HSA运行时规范 10
2.3.3 HSA程序员参考手册—HSAIL SPEC 11
2.4 HSA软件 11
2.5 HSA基金会 12
2.6 小结 13
第3章 HSAIL——虚拟并行ISA 14
3.1 引言 14
3.2 编译流程示例 15
3.3 HSAIL执行模型 16
3.4 HSAIL指令集简介 17
3.4.1 原子操作 18
3.4.2 寄存器 18
3.4.3 分段 19
3.4.4 波前和通道 20
3.5 HSAIL机器模型和配置文件 21
3.6 HSAIL编译流程 22
3.7 HSAIL编译工具 23
3.7.1 编译器框架 23
3.7.2 CL离线编译 24
3.7.3 HSAIL汇编器/反汇编器 25
3.7.4 ISA和机器码汇编器/反汇编器 25
3.8 小结 25
第4章 HSA运行时 26
4.1 引言 26
4.2 HSA核心运行时API 28
4.2.1 运行时的初始化和关闭 28
4.2.2 运行时的通知 29
4.2.3 系统和HSA代理信息 29
4.2.4 信号 30
4.2.5 队列 31
4.2.6 体系结构排队语言 31
4.2.7 内存 32
4.2.8 代码对象和可执行文件 34
4.3 HSA运行时扩展 35
4.3.1 HSAIL 终止化 35
4.3.2 图像和采样器 35
4.4 小结 37
参考文献 38
第5章 HSA 内存模型 39
5.1 引言 39
5.2 HSA内存结构 40
5.2.1 分段 41
5.2.2 平面寻址 42
5.2.3 共享虚拟寻址 42
5.2.4 所有权 43
5.2.5 图像内存 43
5.3 HSA内存一致性基础 43
5.3.1 背景:顺序一致性 44
5.3.2 背景:冲突和竞争 45
5.3.3 单一内存范围的HSA内存模型 45
5.3.4 多个内存范围的HSA内存模型 48
5.3.5 内存段 51
5.3.6 汇总:HSA竞争自由 51
5.3.7 附加观察和注意事项 52
5.4 HSA内存模型中的高级一致性 52
5.4.1 松弛原子 52
5.4.2 所有权和范围界限 54
5.5 小结 54
参考文献 55
第6章 HSA 排队模型 56
6.1 引言 56
6.2 用户模式队列 56
6.3 体系结构排队语言 59
6.3.1 包的类型 60
6.3.2 创建数据包 63
6.4 包的提交与调度 64
6.5 小结 70
参考文献 70
第7章 编译器技术 71
7.1 引言 71
7.2 C++ AMP简介 71
7.2.1 C++ AMP array_view 73
7.2.2 C++ AMP parallel_for_each或内核调用 73
7.3 将HSA作为编译器目标 74
7.4 将关键的C++ AMP构造映射到HSA 75
7.5 C++ AMP编译流程 77
7.6 编译生成的C++ AMP代码 78
7.7 C++ AMP中平铺的编译器支持 80
7.7.1 划分计算域 81
7.7.2 指定地址空间和屏障 81
7.8 内存段注释 82
7.9 针对HSA的通用C++ 84
7.10 平台原子的编译器支持 86
7.11 新建/删除操作符的编译器支持 91
7.11.1 实现具有平台原子性的新建/删除操作符 92
7.11.2 将新建/删除返回的地址提升到全局内存段 94
7.11.3 基于等待 API /信号HSAIL指令改进新建/删除操作符 94
7.12 小结 96
参考文献 96
第8章 应用用例:平台原子性 97
8.1 引言 97
8.2 HSA中的原子性 98
8.3 任务队列系统 100
8.3.1 静态执行 100
8.3.2 动态执行 101
8.3.3 HSA任务队列系统 101
8.3.4 评估 104
8.4 广度优先搜索 107
8.4.1 传统实现 109
8.4.2 HSA实现 110
8.4.3 评估 112
8.5 数据布局转换 113
8.5.1 使用PTTWAC算法进行SoA-ASTA转换 115
8.5.2 PTTWAC的HSA实现 116
8.5.3 评估 116
8.6 小结 118
致谢 118
参考文献 118
第9章 HSA模拟器 120
9.1 在Multi2Sim中模拟HSA 120
9.1.1 引言 120
9.1.2 Multi2Sim-HSA 121
9.1.3 HSAIL 宿主机 HSA 122
9.1.4 HSA 运行时 124
9.1.5 仿真器设计 124
9.1.6 日志与调试 125
9.1.7 Mulit2Sim-HSA路线图 126
9.1.8 安装与支持 126
9.2 HSAemu仿真HSA 127
9.2.1 引言 127
9.2.2 建模的HSA组件 128
9.2.3 HSAemu的设计 129
9.2.4 多线程HSA GPU仿真器 131
9.2.5 剖析、调试与性能模型 132
9.3 softHSA模拟器 133
9.3.1 引言 133
9.3.2 高层次设计 133
9.3.3 创建与测试模拟器 134
9.3.4 使用LLVM HSA模拟器进行调试 135
参考文献 137
索引 139
猜您喜欢