高性能計算算法引擎:線性代數與異構計算的融合
趙先明 鄒曉虎 劉鈞文 夏津 竇興林
- 出版商: 人民郵電
- 出版日期: 2025-12-01
- 售價: $599
- 語言: 簡體中文
- 頁數: 245
- ISBN: 7115660050
- ISBN-13: 9787115660053
-
相關分類:
線性代數 Linear-algebra、CUDA
下單後立即進貨 (約4週~6週)
相關主題
商品描述
本書主要探討線性代數與高性能計算之間的緊密聯系,並著重介紹在芯片架構算法優化中如何應用BLAS庫。本書分為四部分,共12章。第一部分從線性代數的基礎知識開始介紹,逐步深入介紹矩陣運算、向量空間、線性變換以及特征值和特征向量等核心概念;第二部分主要介紹計算機體系結構及其衍生出來的多種處理芯片(CPU、GPGPU等)和分布式計算;第三部分主要介紹高性能計算數學庫BLAS的基本概念和基礎的實現思路,以及高性能計算數學庫的實現框架,如OpenBLAS、CUDA(及其BLAS庫,包括cuBLAS、CUTLASS)、OpenCL、CLBlast、Spark和Spark MLlib BLAS;第四部分主要介紹BLAS庫在人工智能方面的應用。
本書適合對線性代數和芯片架構算法優化感興趣的讀者閱讀。無論是計算機相關專業的學生、高性能計算愛好者、算法工程師,還是希望進入高性能計算行業的人士,都能從中找到適合自己的學習內容。
作者簡介
趙先明,本碩博畢業於哈爾濱工業大學。曾任中興通訊股份有限公司 CTO、董事長和總裁。作為中興通訊移動通信領域的主要技術負責人之一,參與了 2G 到 5G 相關技術的研發和產業化全過程。共獲國家級獎項8項,省部級獎項 12 項。
鄒曉虎,哈爾濱工業大學管理學博士、材料學博士後,哈爾濱工業大學兼職教授;具有深厚的熱能工程、無機非金屬材料學專業技術知識,在國家級刊物公開發表文章 15 篇,擁有發明專利 24 項;在政、產、學、研、金貿等諸多領域任職多年。
劉鈞文,北京紅山微電子技術有限公司基礎線性代數算法庫負責人,京東城市時空數據引擎(JUST)創始人之一,算法工程師。中國計算機學會(CCF)類數據庫專業委員會通訊委員。著有《Calcite 數據管理實戰》《GeoTools 地理信息系統開發》《GeoMesa 時空數據管理》。
夏津,畢業於哈爾濱工業大學,主要從事高性能計算和 A 芯片領域的研究,從事相關工作5年。具備A模型部署的實戰經驗,曾為多個開源 A| 推理框架貢獻代碼。
竇興林,畢業於西安電子科技大學,長期從事半導體芯片的設計與封裝工作。曾在廣東晶科電子股份有限公司、大唐電信科技股份有限公司、中移物聯網有限公司等業內領先企業任職,積累了豐富的芯片行業經驗。
目錄大綱
第 一部分 線性代數前置知識
第 1章 基礎線性代數算法簡介 3
1.1 高性能計算 3
1.2 高性能計算數學庫 4
1.2.1 高性能計算數學庫簡介 4
1.2.2 高性能計算數學庫分類 4
1.3 基礎線性代數算法 7
1.3.1 稠密矩陣和稀疏矩陣 7
1.3.2 針對稠密矩陣的線性代數算法 10
1.3.3 針對稀疏矩陣的線性代數算法 10
1.4 本章小結 11
第 2章 數學基礎 12
2.1 線性代數的基本概念 12
2.1.1 向量和向量空間 12
2.1.2 行列式和矩陣 13
2.1.3 線性方程組 14
2.1.4 矩陣的秩 15
2.2 矩陣乘法 15
2.2.1 概述 15
2.2.2 基於內積和外積的矩陣乘法 17
2.2.3 矩陣乘法切分邏輯 18
2.2.4 蛋糕模型 21
2.2.5 Strassen算法 23
2.3 多項式方程組求解 27
2.4 本章小結 29
第二部分 計算機體系結構和算法優化
第3章 計算機體系結構 33
3.1 馮 諾依曼架構 33
3.2 存儲系統 35
3.2.1 主存(主存儲器) 35
3.2.2 緩存 37
3.2.3 主存和緩存之間的映射關系 38
3.2.4 Bank沖突問題 40
3.3 控制系統 42
3.3.1 指令控制器 42
3.3.2 時序控制器 42
3.3.3 總線控制器 43
3.4 通信系統 43
3.4.1 總線 44
3.4.2 PCIe標準 45
3.4.3 NVLink標準 46
3.5 服務器系統架構 47
3.5.1 SMP架構 47
3.5.2 NUMA架構 48
3.5.3 MPP架構 49
3.6 本章小結 50
第4章 CPU 51
4.1 CPU概述 51
4.2 CPU向量指令系統 52
4.2.1 X86架構 52
4.2.2 ARM架構 53
4.3 CPU算法優化方法 55
4.3.1 CPU的理論極限和算法的計算訪存比 55
4.3.2 RoofLine模型 56
4.4 實戰:在CPU上優化矩陣乘法 57
4.4.1 優化一:根據NEON指令的粒度,對矩陣進行第 一次分塊 59
4.4.2 優化二:擴大計算規模,提高計算訪存比 60
4.4.3 優化三:訪存優化,提高計算訪存比 61
4.5 本章小結 62
第5章 GPGPU 63
5.1 GPGPU概述 63
5.2 GPGPU架構介紹 64
5.2.1 GPGPU架構概述 64
5.2.2 運算器 66
5.2.3 控制器 71
5.2.4 存儲器 71
5.2.5 GPGPU與CPU的對比 71
5.3 開源GPGPU項目——承影GPGPU 72
5.4 並行計算算法優化方法 73
5.4.1 GPU的理論極限和算法的計算訪存比 73
5.4.2 優化方法論 74
5.4.3 實戰:在GPU上優化一個矩陣乘法 74
5.5 本章小結 76
第6章 分布式計算 77
6.1 分布式計算概述 77
6.2 大數據時代分布式計算架構 78
6.2.1 MapReduce架構 78
6.2.2 DAG架構 80
6.3 分布式計算算法優化方法 81
6.3.1 邏輯優化 82
6.3.2 物理優化 84
6.3.3 數據優化 87
6.4 本章小結 90
第三部分 BLAS庫與多種硬件平臺
第7章 高性能BLAS庫 93
7.1 BLAS概述 93
7.1.1 BLAS發展歷史 93
7.1.2 BLAS特性 95
7.1.3 BLAS生態系統 95
7.2 BLAS函數的命名規範 96
7.3 各級別BLAS函數 103
7.3.1 Level 1函數 103
7.3.2 Level 2函數 104
7.3.3 Level 3函數 105
7.4 BLAS函數 105
7.4.1 BLAS函數的分類 105
7.4.2 BLAS函數之間的內部推導關系 124
7.5 本章小結 125
第8章 OpenBLAS 126
8.1 OpenBLAS概述 126
8.1.1 OpenBLAS與張先軼 127
8.1.2 OpenBLAS的前世今生 127
8.1.3 OpenBLAS的現狀 127
8.2 OpenBLAS實戰 128
8.2.1 OpenBLAS的安裝方法 128
8.2.2 OpenBLAS的使用方法 129
8.3 OpenBLAS架構設計 132
8.3.1 目錄結構 132
8.3.2 軟件調用架構 134
8.4 OpenBLAS GEMM算法詳解 135
8.5 本章小結 139
第9章 CUDA、cuBLAS和CUTLASS 140
9.1 CUDA概述 140
9.1.1 NVIDIA簡介 140
9.1.2 NVIDIA GPU硬件架構 141
9.1.3 CUDA簡介 143
9.2 CUDA架構與實戰 145
9.2.1 CUDA基本概念 145
9.2.2 CUDA硬件架構 146
9.2.3 CUDA內存模型 146
9.2.4 CUDA執行流程 147
9.2.5 CUDA性能優化 147
9.2.6 CUDA實戰 148
9.3 cuBLAS概述 152
9.4 cuBLAS實戰 153
9.5 CUTLASS概述 155
9.6 CUTLASS GEMM算法詳解 156
9.6.1 使用方法 156
9.6.2 矩陣分塊策略 158
9.6.3 整體計算過程 159
9.6.4 主機端前處理 160
9.6.5 設備端前處理 164
9.6.6 設備端核心計算 165
9.6.7 設備端後處理 170
9.7 本章小結 172
第 10章 OpenCL和CLBlast 173
10.1 OpenCL概述 173
10.2 OpenCL架構設計 174
10.3 OpenCL編程模型 176
10.4 OpenCL存儲結構 179
10.4.1 存儲分區 179
10.4.2 存儲對象 181
10.4.3 共享虛擬內存 182
10.5 OpenCL實戰 183
10.6 CLBlast概述 187
10.6.1 OpenCL相關的BLAS庫 187
10.6.2 CLBlast特性 188
10.7 CLBlast實戰 188
10.8 CLBlast GEMM算法詳解 191
10.8.1 函數定義 191
10.8.2 非直接GEMM算法執行 過程 193
10.9 本章小結 197
第 11章 Spark和Spark MLlib BLAS 198
11.1 Spark和Spark SQL概述 198
11.1.1 Spark概述 198
11.1.2 Spark SQL概述 199
11.2 Spark MLlib BLAS詳解 200
11.2.1 Spark MLlib概述 200
11.2.2 對矩陣和向量的支持 201
11.2.3 BLAS函數的使用 208
11.2.4 分布式矩陣 210
11.2.5 對UDT的支持 215
11.2.6 Spark SQL的使用 216
11.3 Spark MLlib BLAS GEMM算法 詳解 218
11.3.1 Spark引用的BLAS庫 218
11.3.2 分布式矩陣乘法算法 222
11.4 本章小結 225
第四部分 BLAS庫與人工智能
第 12章 BLAS庫在人工智能方面的 應用 229
12.1 卷積神經網絡的計算流程 229
12.1.1 卷積層 229
12.1.2 全連接層 231
12.1.3 池化層 232
12.1.4 上采樣層 233
12.1.5 連接層 234
12.1.6 其他網絡層 234
12.2 卷積神經網絡的並行加速 234
12.2.1 層內並行 235
12.2.2 層間流水 236
12.3 卷積神經網絡加速實戰 237
12.3.1 cuDNN庫概述 237
12.3.2 cuDNN庫安裝 237
12.3.3 cuDNN庫使用方法 239
12.4 本章小結 245

