本書為我們呈現(xiàn)了異構(gòu)系統(tǒng)架構(gòu)(HSA)的關(guān)鍵技術(shù)、實(shí)現(xiàn)方法和案例應(yīng)用。首先回顧異構(gòu)并行處理的發(fā)展進(jìn)程、相關(guān)問題,分析HSA相對(duì)于其他技術(shù)的優(yōu)勢。之后深入探討了運(yùn)行時(shí)、內(nèi)存模型、隊(duì)列、上下文交換、架構(gòu)隊(duì)列語言、模擬器、工具鏈等問題。后選取三個(gè)實(shí)際案例,基于C++應(yīng)用程序,說明了HSA如何能夠顯著提升程序性能。
--作者簡介---
胡文美(Wen-mei W. Hwu) MulticoreWare公司聯(lián)合創(chuàng)始人兼CTO,現(xiàn)任美國伊利諾伊大學(xué)厄巴納-香檳分校(UIUC)電氣與計(jì)算機(jī)工程系教授,兼任并行計(jì)算研究中心(Microsoft和Intel聯(lián)合資助)首席科學(xué)家,以及全球CUDA卓越中心(NVIDIA資助)首席研究員。胡教授是IEEE和ACM會(huì)士,在編譯器設(shè)計(jì)、計(jì)算機(jī)體系結(jié)構(gòu)、微體系結(jié)構(gòu)和并行計(jì)算方面貢獻(xiàn)卓著。
---譯者簡介---
方娟 北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院教授,計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)系主任。長期從事計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域的教學(xué)和科研工作,近年來致力于異構(gòu)多核體系結(jié)構(gòu)的研究。
出版者的話
譯者序
推薦序
前言
作者簡介
第1章 引言 1
第2章 HSA 概述 5
2.1 GPU計(jì)算簡史:HSA解決的問題 5
2.2 HSA的支柱 9
2.2.1 HSA內(nèi)存模型 9
2.2.2 HSA排隊(duì)模型 9
2.2.3 HSAIL虛擬ISA 10
2.2.4 HSA上下文切換 10
2.3 HSA規(guī)范 10
2.3.1 HSA平臺(tái)系統(tǒng)體系結(jié)構(gòu)規(guī)范 10
2.3.2 HSA運(yùn)行時(shí)規(guī)范 10
2.3.3 HSA程序員參考手冊(cè)—HSAIL SPEC 11
2.4 HSA軟件 11
2.5 HSA基金會(huì) 12
2.6 小結(jié) 13
第3章 HSAIL——虛擬并行ISA 14
3.1 引言 14
3.2 編譯流程示例 15
3.3 HSAIL執(zhí)行模型 16
3.4 HSAIL指令集簡介 17
3.4.1 原子操作 18
3.4.2 寄存器 18
3.4.3 分段 19
3.4.4 波前和通道 20
3.5 HSAIL機(jī)器模型和配置文件 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和機(jī)器碼匯編器/反匯編器 25
3.8 小結(jié) 25
第4章 HSA運(yùn)行時(shí) 26
4.1 引言 26
4.2 HSA核心運(yùn)行時(shí)API 28
4.2.1 運(yùn)行時(shí)的初始化和關(guān)閉 28
4.2.2 運(yùn)行時(shí)的通知 29
4.2.3 系統(tǒng)和HSA代理信息 29
4.2.4 信號(hào) 30
4.2.5 隊(duì)列 31
4.2.6 體系結(jié)構(gòu)排隊(duì)語言 31
4.2.7 內(nèi)存 32
4.2.8 代碼對(duì)象和可執(zhí)行文件 34
4.3 HSA運(yùn)行時(shí)擴(kuò)展 35
4.3.1 HSAIL 終止化 35
4.3.2 圖像和采樣器 35
4.4 小結(jié) 37
參考文獻(xiàn) 38
第5章 HSA 內(nèi)存模型 39
5.1 引言 39
5.2 HSA內(nèi)存結(jié)構(gòu) 40
5.2.1 分段 41
5.2.2 平面尋址 42
5.2.3 共享虛擬尋址 42
5.2.4 所有權(quán) 43
5.2.5 圖像內(nèi)存 43
5.3 HSA內(nèi)存一致性基礎(chǔ) 43
5.3.1 背景:順序一致性 44
5.3.2 背景:沖突和競爭 45
5.3.3 單一內(nèi)存范圍的HSA內(nèi)存模型 45
5.3.4 多個(gè)內(nèi)存范圍的HSA內(nèi)存模型 48
5.3.5 內(nèi)存段 51
5.3.6 匯總:HSA競爭自由 51
5.3.7 附加觀察和注意事項(xiàng) 52
5.4 HSA內(nèi)存模型中的高級(jí)一致性 52
5.4.1 松弛原子 52
5.4.2 所有權(quán)和范圍界限 54
5.5 小結(jié) 54
參考文獻(xiàn) 55
第6章 HSA 排隊(duì)模型 56
6.1 引言 56
6.2 用戶模式隊(duì)列 56
6.3 體系結(jié)構(gòu)排隊(duì)語言 59
6.3.1 包的類型 60
6.3.2 創(chuàng)建數(shù)據(jù)包 63
6.4 包的提交與調(diào)度 64
6.5 小結(jié) 70
參考文獻(xiàn) 70
第7章 編譯器技術(shù) 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或內(nèi)核調(diào)用 73
7.3 將HSA作為編譯器目標(biāo) 74
7.4 將關(guān)鍵的C++ AMP構(gòu)造映射到HSA 75
7.5 C++ AMP編譯流程 77
7.6 編譯生成的C++ AMP代碼 78
7.7 C++ AMP中平鋪的編譯器支持 80
7.7.1 劃分計(jì)算域 81
7.7.2 指定地址空間和屏障 81
7.8 內(nèi)存段注釋 82
7.9 針對(duì)HSA的通用C++ 84
7.10 平臺(tái)原子的編譯器支持 86
7.11 新建/刪除操作符的編譯器支持 91
7.11.1 實(shí)現(xiàn)具有平臺(tái)原子性的新建/刪除操作符 92
7.11.2 將新建/刪除返回的地址提升到全局內(nèi)存段 94
7.11.3 基于等待 API /信號(hào)HSAIL指令改進(jìn)新建/刪除操作符 94
7.12 小結(jié) 96
參考文獻(xiàn) 96
第8章 應(yīng)用用例:平臺(tái)原子性 97
8.1 引言 97
8.2 HSA中的原子性 98
8.3 任務(wù)隊(duì)列系統(tǒng) 100
8.3.1 靜態(tài)執(zhí)行 100
8.3.2 動(dòng)態(tài)執(zhí)行 101
8.3.3 HSA任務(wù)隊(duì)列系統(tǒng) 101
8.3.4 評(píng)估 104
8.4 廣度優(yōu)先搜索 107
8.4.1 傳統(tǒng)實(shí)現(xiàn) 109
8.4.2 HSA實(shí)現(xiàn) 110
8.4.3 評(píng)估 112
8.5 數(shù)據(jù)布局轉(zhuǎn)換 113
8.5.1 使用PTTWAC算法進(jìn)行SoA-ASTA轉(zhuǎn)換 115
8.5.2 PTTWAC的HSA實(shí)現(xiàn) 116
8.5.3 評(píng)估 116
8.6 小結(jié) 118
致謝 118
參考文獻(xiàn) 118
第9章 HSA模擬器 120
9.1 在Multi2Sim中模擬HSA 120
9.1.1 引言 120
9.1.2 Multi2Sim-HSA 121
9.1.3 HSAIL 宿主機(jī) HSA 122
9.1.4 HSA 運(yùn)行時(shí) 124
9.1.5 仿真器設(shè)計(jì) 124
9.1.6 日志與調(diào)試 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的設(shè)計(jì) 129
9.2.4 多線程HSA GPU仿真器 131
9.2.5 剖析、調(diào)試與性能模型 132
9.3 softHSA模擬器 133
9.3.1 引言 133
9.3.2 高層次設(shè)計(jì) 133
9.3.3 創(chuàng)建與測試模擬器 134
9.3.4 使用LLVM HSA模擬器進(jìn)行調(diào)試 135
參考文獻(xiàn) 137
索引 139