相關主題
商品描述
本書全面介紹了異構並行計算和 GPU 編程的基礎知識與高級應用。龔春葉博士、楊建博士和段勃博士憑借 20 多年的三維圖形與高性能計算領域的研究與實踐經驗,為讀者展現了 GPU 編程的深層原理和實踐技巧。本書從異構並行計算的基本概念講起,逐步深入到復雜的高級主題,構建了一個系統全面的知識結構。內容覆蓋了從基礎理論到實際應用,從編程模型到內存管理,再到性能優化等多個層面。書中不僅詳盡闡述了MXMACA C/C++編程語言的特性和應用,還通過豐富的示例代碼,展示了在沐曦高性能 GPU 平臺上開發計算加速應用程序的全過程。無論是在校大學生、教師,還是對異構並行計算感興趣的研究者和行業開發者,都能從這本書中獲得實用的指導。它不僅適合作為高校教材和自學參考書,也適合作為工程師和科研人員的案頭手冊。在算力成為推動科技和產業發展關鍵因素的今天,本書的出版恰逢其時。它不僅為讀者提供了深入學習GPU 編程和異構並行計算的途徑,也為科學計算、大數據分析、人工智能等領域的專業人士提供了寶貴的資源。跟隨三位作者的引導,讀者將能夠探索並利用異構並行計算的強大能力,開啟計算加速的新篇章。
目錄大綱
目 錄
第1章 GPU並行計算導論 1
1.1 基本概念 1
1.1.1 CPU、GPU與眾核 1
1.1.2 串行計算和並行計算 2
1.1.3 CPU進程、線程 2
1.1.4 GPU線程、線程束、線程塊和核函數 3
1.1.5 GPU全局存儲和共享存儲 3
1.1.6 全局動態內存的對齊訪問和合並訪問 4
1.1.7 同構系統和異構系統 4
1.1.8 共享內存架構和分布式內存架構 4
1.1.9 共享存儲架構和分布式存儲架構 5
1.1.10 MPI和OpenMP 6
1.1.11 CUDA、MXMACA和OpenCL 6
1.1.12 科學計算與智能計算 7
1.2 並行計算體系架構 7
1.3 GPU簡介 9
1.4 GPU第一波浪潮:可視化計算 10
1.5 GPU第二波浪潮:科學計算 12
1.6 GPU第三波浪潮:虛擬貨幣 12
1.7 GPU第四波浪潮:人工智能 13
1.8 MXMACA並行編程模型 14
1.9 後摩爾時代的挑戰及機遇 15
1.10 本章小結 18
第2章 並行歸約算法實現及優化 19
2.1 背景介紹 19
2.1.1 歸約及應用場景 19
2.1.2 相關研究 20
2.1.3 並行歸約設計思路 21
2.1.4 並行歸約樸素實現:相鄰配對 22
2.2 並行歸約優化 24
2.2.1 優化一:消除線程束分化 24
2.2.2 優化二:消除Bank沖突 25
2.2.3 優化三:加載時計算 27
2.2.4 優化四:循環展開 27
2.2.5 優化五:完全循環展開 29
2.2.6 優化六:單線程多次加法 29
2.3 本章小結 31
第3章 基礎算法優化 33
3.1 CPU、GPU計時函數 33
3.2 BLAS axpy優化 34
3.2.1 axpy實現方案一 35
3.2.2 axpy實現方案二 35
3.2.3 axpy實現方案三 36
3.2.4 測試結果 37
3.3 隨機數生成器優化 37
3.3.1 隨機數生成器 38
3.3.2 隨機數生成器測試結果 40
3.3.3 典型應用:計算Pi 41
3.4 前綴求和優化 46
3.4.1 背景 46
3.4.2 基本實現 47
3.4.3 ScanPostKernel優化 49
3.4.4 ScanSegSumKernel優化 50
3.4.5 BlellochScan優化 52
3.5 本章小結 55
第4章 GEMM優化 56
4.1 矩陣乘法的性能建模與優化 56
4.2 矩陣乘法的問題描述 58
4.2.1 問題的數學描述 59
4.2.2 BLAS:基礎線性代數子程序庫與SGEMM詳解 60
4.2.3 內存布局 60
4.2.4 BLAS接口的設計 61
4.2.5 為什麼需要深入理解GEMM 62
4.3 簡單矩陣乘法:三重循環 62
4.3.1 從CPU到GPU的思維轉變 63
4.3.2 GPU並行化思路 63
4.3.3 MACA實現解析 63
4.3.4 內核啟動配置與線程組織 65
4.3.5 性能分析 65
4.4 內存聚合(Memory Coalescing) 65
4.4.1 內存聚合—GPU內存訪問的“團購”模式 66
4.4.2 優化實戰—重新設計線程映射 67
4.4.3 一種巧妙的方案 67
4.5 分塊矩陣乘法與屋檐模型 68
4.5.1 屋檐模型:性能的“天花板” 68
4.5.2 屋檐模型與性能診斷 69
4.5.3 分塊矩陣乘法提高計算訪存比 70
4.6 層次化分塊矩陣乘法與層次化屋檐模型 73
4.6.1 新的瓶頸:共享內存帶寬 73
4.6.2 層次化屋檐模型 73
4.6.3 矩陣乘法優化的“最後一公裏”:線程級分塊 74
4.7 內積還是外積?交給編譯器優化 76
4.7.1 內積與外積的較量 76
4.7.2 理想與現實的差距 76
4.7.3 啟示與思考 77
4.8 深入理解GPU共享內存沖突與優化方案 77
4.8.1 理解GPU共享內存的組織方式 77
4.8.2 哪裏會產生Bank沖突 78
4.8.3 如何解決這個問題 78
4.8.4 如何選擇優化方案 80
4.9 本章小結 80
第5章 FFT算法優化 81
5.1 背景介紹 81
5.2 國內外相關研究 85
5.3 基本實現方式 86
5.3.1 基於Cooley-Tukey算法的CPU實現 86
5.3.2 基於Cooley-Tukey算法的GPU實現 87
5.4 性能優化 91
5.4.1 蝶形變換優化 91
5.4.2 訪存優化 95
5.5 本章小結 98
第6章 Laplace方程求解優化 99
6.1 Laplace方程推導及求解 99
6.1.1 Laplace方程的推導 99
6.1.2 三類邊界條件 100
6.1.3 Laplace方程的數值求解 101
6.2 熱傳導Laplace方程求解CPU版本實現 102
6.3 熱傳導Laplace方程求解GPU版本實現 103
6.3.1 算法並行化—紅黑排序 103
6.3.2 GPU版本實現 106
6.4 GPU版本優化—合並訪存優化 110
6.5 GPU版本優化—殘差共享內存優化 111
6.6 GPU版本優化—原子操作指令優化 115
6.7 本章小結 117
第7章 加/解密算法優化 118
7.1 背景介紹 118
7.2 國內外研究現狀 120
7.3 AES加密算法優化 121
7.3.1 AES加密算法簡介 121
7.3.2 AES加密算法的CPU版本實現 123
7.3.3 AES加密算法的GPU版本實現及優化 129
7.3.4 實驗結果與測試 133
7.4 MD5加/解密算法的實現與優化 133
7.4.1 MD5加密算法簡介 133
7.4.2 MD5加密算法的CPU版本實現 137
7.4.3 MD5解密算法的CPU版本實現 139
7.4.4 MD5解密算法的GPU版本實現及優化 142
7.4.5 測試結果 145
7.5 SHA-256加密算法的實現與優化 145
7.5.1 SHA-256加密算法簡介 145
7.5.2 SHA-256加密算法的CPU版本實現 148
7.5.3 SHA-256加密算法的GPU版本實現及優化 151
7.5.4 測試結果 155
7.6 本章小結 155
第8章 MXMACA程序優化 157
8.1 人工智能、機器學習和深度學習 157
8.2 人工智能歷史 159
8.2.1 前智能時代(1955年及以前) 159
8.2.2 人工智能第一波浪潮(1956—1973年) 160
8.2.3 人工智能第二波浪潮(1980—1987年) 161
8.2.4 人工智能第三波浪潮(1993—2011年) 162
8.2.5 人工智能第四波浪潮(2012年至今) 164
8.3 Darknet及典型深度學習模型YOLO 166
8.4 圖像矩陣列轉換 167
8.5 BLAS:基礎線性代數子程序庫 170
8.6 池化 172
8.7 批量歸一化 175
8.8 激活 177
8.9 卷積 179
8.10 測試結果 181
8.11 本章小結 182
第9章 粒子輸運模擬優化 183
9.1 背景介紹 183
9.2 理論基礎 185
9.3 三維確定性結構化網格粒子輸運模擬優化 186
9.3.1 異構協同並行算法 190
9.3.2 基本的線程級並行掃描 190
9.3.3 源項計算 191
9.3.4 Sn遞歸方程求解 192
9.3.5 其他過程 194
9.3.6 並行度分析及並行模型映射 196
9.3.7 測試結果 196
9.4 二維確定性非結構化網格粒子輸運模擬優化 197
9.4.1 預掃描算法 198
9.4.2 非結構化網格通量掃描並行度分析 201
9.4.3 並行通量掃描及模型映射 202
9.4.4 性能優化 204
9.4.5 測試結果 204
9.5 本章小結 205
第10章 稀疏線性系統求解優化 207
10.1 背景介紹 207
10.2 國內外研究現狀 207
10.3 SPMV算法優化 209
10.3.1 SPMV簡介 209
10.3.2 稀疏矩陣存儲格式 210
10.3.3 CPU版本SPMV算法實現 212
10.3.4 GPU版本SPMV算法實現 213
10.3.5 測試結果 217
10.4 CG算法優化 219
10.4.1 CG算法基本過程 219
10.4.2 CG算法CPU版本 220
10.4.3 CG算法GPU版本 222
10.4.4 測試結果 227
10.5 本章小結 228
第11章 高性能圖計算優化 229
11.1 背景介紹 229
11.1.1 大數據時代圖計算 229
11.1.2 圖計算框架 230
11.2 國內外研究現狀 231
11.2.1 基於CPU的圖計算框架 231
11.2.2 基於GPU的圖計算框架 236
11.2.3 總結 236
11.3 基於稀疏矩陣乘法的圖計算框架設計及優化 237
11.3.1 圖的定義及存儲結構 237
11.3.2 框架設計 238
11.3.3 性能優化策略 241
11.4 算法應用與測試 246
11.4.1 算法應用 247
11.4.2 測試結果 248
11.5 本章小結 249
參考文獻 251
附錄A MXMACA編程相關術語 253
附錄B MXMACA編程叢書相關縮略語 255
