异构系统体系结构:原理、模型及应用
作者 : [美]胡文美(Wen-mei W. Hwu)编著
译者 : 方娟 蔡旻 译
丛书名 : 计算机科学丛书
出版日期 : 2018-08-23
ISBN : 978-7-111-60669-7
定价 : 59.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 157
开本 : 16
原书名 : Heterogeneous System Architecture: A New Compute Platform Infrastructure
原出版社: Elsevier (Singapore) Pte Ltd
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书为我们呈现了异构系统架构(HSA)的关键技术、实现方法和案例应用。首先回顾异构并行处理的发展进程、相关问题,分析HSA相对于其他技术的优势。之后深入探讨了运行时、内存模型、队列、上下文交换、架构队列语言、模拟器、工具链等问题。最后选取三个实际案例,基于C++应用程序,说明了HSA如何能够显著提升程序性能。

图书特色

图书前言

我很自豪地向你介绍异构系统体系结构—一个新的计算平台。异构系统体系结构(HSA)是多方面协作的结果,它定义了一个新的系统体系结构,为CPU和专用计算设备提供必要的支持,以便在要求苛刻的任务上进行高效协作。本书汇集了那些创建HSA及其相关软件栈的专家撰写的一系列著作。这些著作解释了规范和产品背后的基本原理和设计权衡,这是仅仅通过阅读手册和文件不能轻易获得的。这些作者中的一些来自工业界,另一些来自学术界。我有幸有机会与这些世界级的专家合作。
有许多人做出了未以章节形式展现的重要贡献。我想要感谢的第一个人是Manju Hegde(AMD),他说服我担任本书的主编,在整个过程中他始终是重要的合作伙伴。Manju提供了本书的原始构思,并帮助招募了许多作者和审稿人。他还亲自审查了各章,并提供了宝贵的意见。
本书的内容源自于2013年HotChips和2014年ACM / IEEE国际计算机体系结构研讨会(ISCA)上的会议资料。大多数演讲者成为本书各章的作者。然而,最初介绍HSA排队模型的Chien-Ping Lu(联发科)、Hakan Persson(ARM)和Ian Bratt(ARM)由于时间关系不能参与写作。我还要感谢J. P. Bordes(AMD),他对HSA应用程序部分做出了重大贡献。
我还要特别感谢五位特别的人。HSA首席布道者Greg Stoner(AMD)为HSA基金会创作本书提供了宝贵的支持。Anton Lokhmotov(ARM)和我一起确立了本书的原始大纲。Tom Jablin(MulticoreWare)是HSA方面的专家,他在编辑过程中为我提供了宝贵的技术支持。Marty Johnson(AMD)和Sui Chi Chan(AMD)审读了全书,并为我和其他作者提供了宝贵的反馈意见。
最后,我要感谢担任本书项目经理的Bob Whitecotton(AMD),他确保我和其他作者的写作不离题。他的项目管理技巧使我避免了许多陷阱。没有他的帮助,我将无法完成这个项目。

上架指导

计算机体系结构

封底文字

我们正迎来异构计算时代的曙光,未来所有的计算平台都可能包含异构性。然而,还存在许多异构系统体系结构(HSA)设计要解决的问题。本书解释了HSA如何解决这些问题,事实上,它的出版标志了异构计算的重要里程碑。
——Mateo Valero,巴塞罗那超级计算中心主任

本书由HSA及其软件栈的创建者联合撰写。作者团队中既有来自AMD、MulticoreWare、高通等公司的技术专家,也有来自美国伊利诺伊大学和东北大学等高校的资深学者。

书中简明且清晰地呈现了HSA的基本原理和核心技术,讨论了这一全新计算平台基础设施的设计权衡和创新,并分析了利用HSA提升程序性能的实践案例。这些知识是很难通过阅读规范手册和软件文档而轻松获得的,因而本书特别适合业界的软件开发人员、研究人员和学生阅读,以期共同推进异构计算系统的设计与实现。

作者简介

[美]胡文美(Wen-mei W. Hwu)编著:---作者简介---
胡文美(Wen-mei W. Hwu) MulticoreWare公司联合创始人兼CTO,现任美国伊利诺伊大学厄巴纳-香槟分校(UIUC)电气与计算机工程系教授,兼任并行计算研究中心(Microsoft和Intel联合资助)首席科学家,以及全球首家CUDA卓越中心(NVIDIA资助)首席研究员。胡教授是IEEE和ACM会士,在编译器设计、计算机体系结构、微体系结构和并行计算方面贡献卓著。

---译者简介---
方娟 北京工业大学计算机学院教授,计算机系统结构系主任。长期从事计算机体系结构领域的教学和科研工作,近年来致力于异构多核体系结构的研究。

译者序

随着GPU和CPU的广泛应用,人们已经认识到这两类处理器都具有独特的功能和优势。GPU处理器不但具备3D图形渲染能力,而且可以实现基于大数据集的密集计算。CPU处理器也兼具操作系统的运转和传统串行任务的执行两大特性。CPU+GPU协同工作是实现高性能计算的必然趋势,计算机的发展也从传统的同构多核时代进入了异构多核时代。近年来,异构计算作为高端可编程芯片、低功耗软件定义芯片、嵌入式计算和高性能计算等领域的研究热点和主流计算机体系结构的发展方向,受到国内外广泛关注。异构体系结构也将改变未来的计算模式。
本书对于从事异构计算的科研工作者来说,无疑是首选的阅读书籍。本书的主要内容包括异构体系结构的概述、规范、指令集、运行、内存模型、排队模型及应用实例等,适合于研究生教学及研究者使用。本书集合了大量学术界和工业界的世界级专家的智慧,不仅汇集了异构体系结构领域的基本原理,而且通过实例阐述了CPU+GPU的协同工作模式,从而激发读者的学习兴趣和研究兴趣。
从本人多年前的多核计算技术研究,发展到现在的异构体系结构领域中高性能和低功耗技术的研究,本书中精辟的论述、大量的案例,给我的教学和科研工作带来了巨大的帮助。本书对正在从事这方面研究的中国学者来说,无疑是一个福音。
在本书的翻译中,我们力求忠实原作。在此特别感谢赵浩炎、宗欢、程妍瑾、常泽清、陈欢欢、汪梦萱等人在本书初稿翻译中协助完成了部分工作。限于译者水平,本书的翻译难免会存在纰漏,恳请广大读者批评指正。

方娟
2018年7月于北京

推荐序

我们正迎来异构计算时代的曙光。几乎所有的应用程序都是功率受限的,未来所有的计算平台都可能包含异构性。巴塞罗那超级计算中心是异构超级计算的先驱之一。Mt. Blanc项目探索了使用高吞吐量GPU和低功耗CPU来解决与未来超级计算机设计相关的功耗挑战。在整个项目中,我们遇到了许多异构系统体系结构(HSA)设计要解决的问题。
本书解释了HSA如何解决这些问题。对于这样的问题,需要使用专门的接口来编程Mt. Blanc系统中的GPU。我很高兴HSA功能为主机和GPU开发了一个标准的C++编译器。而且,我预计未来还会有其他主流语言(如FORTRAN)在HSA系统上出现。这将允许程序员使用标准语言对异构计算系统中的所有计算设备进行编程,从而大大降低软件成本。另一个具有挑战性的问题是缺乏平台范围的同步支持来协调多个计算设备的协作活动。我很高兴地看到案例研究显示了一些经常使用的计算模式可以从CPU和GPU之间的协作执行中受益,而HSA平台的原子功能使得这种协作执行成为可能。
本书由创建HSA体系结构和软件栈的专家撰写。他们的著作为HSA的各个方面提供了历史背景和理论基础。这样的见解对于研究生、软件开发人员和系统实施者来说是非常有价值的。事实上,这本书的出版标志了异构计算的重要里程碑。

Mateo Valero
巴塞罗那超级计算中心主任
2015年9月

图书目录

出版者的话
译者序
推荐序
前言
作者简介
第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

教学资源推荐
作者: Linda Null,Julia Lobur
作者: 贾世祥 俞建新 马小飞 肖建 编著
作者: 胡伟武 等著
参考读物推荐
作者: [土耳其] 卡格特·古尔图克(Cagatay Gurturk)著
作者: 吴飞青,丁晓,李林功,练斌