本書面向國產E級超算的體系結構和高性能計算領域,關注近年來出現(xiàn)的新超算硬件和新軟件技術(如神威E級超算編程模式、DCU編程模式)。本書涵蓋神威、曙光等超算的硬件架構與編程方法,深度結合國產超算體系結構特點,以實例的形式探討異構超算上的高性能算法設計、優(yōu)化技術及高性能軟件的開發(fā)和優(yōu)化方法。本書可作為高等院校計算機科學與技術、軟件工程等專業(yè)本科生或研究生的教材,使其在掌握通用計算機程序設計的基礎上,進一步提升在該領域的理論知識水平和程序優(yōu)化實踐技能,也可作為從事高性能計算和體系結構研究的科研工作者與工程技術人員的參考資料,同時也能為關注高性能計算與超算技術發(fā)展的讀者提供有益參考。
儲根深,工學博士,長期從事面向國產超算異構混合架構的基礎數學庫、大規(guī)模并行算法、高性能科學計算軟件與性能優(yōu)化研究。主導開發(fā)了MISA-MD、MISA-AKMC等大型材料計算軟件,在神威超算實現(xiàn)萬億粒子規(guī)模的MD模擬世界紀錄。核心參與國家重點研發(fā)、國家自然科學基金等項目近10項。發(fā)表SCI/EI高水平論文10余篇、申請發(fā)明專利10余項。
第1章 緒論 1
1.1 高性能計算應用需求和意義 1
1.2 混合架構超算發(fā)展趨勢 2
1.3 如何進行異構混合架構上的程序設計 2
1.4 本書的內容和安排 3
第2章 異構混合架構概述 5
2.1 國際國內超算現(xiàn)狀 5
2.1.1 超算發(fā)展歷程 6
2.1.2 超算發(fā)展現(xiàn)狀 8
2.1.3 我國超算發(fā)展現(xiàn)狀 12
2.2 典型的混合架構計算機 13
2.2.1 CPU+GPU架構:以Frontier、Summit、Aurora為代表 13
2.2.2 ARM架構:日本富岳 16
2.2.3 CPU+DCU:曙光超算 17
2.2.4 神威主從核架構:新一代神威超算 18
2.2.5 新一代天河超算 19
2.3 混合架構程序設計語言與框架概述 22
2.3.1 OpenMP 22
2.3.2 MPI 23
2.3.3 CUDA/HIP 24
2.3.4 OpenACC 25
2.3.5 Athread 26
2.3.6 OpenCL 27
2.3.7 oneAPI 28
習題 29
參考文獻 30
第3章 異構混合架構性能分析理論 31
3.1 并行程序的時間開銷 31
3.2 相對性能 31
3.3 絕對性能 36
3.4 性能瓶頸 37
3.4.1 計算密度 37
3.4.2 訪存密集與計算密集 38
3.4.3 roofline性能模型 38
3.4.4 roofline分析示例:SpMV 39
習題 41
參考文獻 42
第4章 CPU高性能程序設計 43
4.1 內存模型與OpenMP、MPI并行編程方法 43
4.2 OpenMP并行編程簡介 44
4.2.1 OpenMP的Hello World 45
4.2.2 編譯制導指令 47
4.2.3 運行時庫函數 49
4.2.4 環(huán)境變量 49
4.2.5 OpenMP offload 49
4.3 MPI并行編程簡介 50
4.3.1 MPI基本函數 50
4.3.2 MPI通信模式 55
4.4 SIMD向量化 60
4.4.1 CPU向量化指令集發(fā)展 60
4.4.2 向量化編程實踐 61
4.5 性能分析工具 65
4.5.1 perf工具 65
4.5.2 gprof工具 69
4.5.3 IPM工具 70
4.5.4 Score-P工具 73
習題 76
第5章 神威異構眾核程序設計 77
5.1 神威超算及編程環(huán)境概述 77
5.1.1 神威超算的背景及歷史 77
5.1.2 神威·太湖之光超算架構 78
5.1.3 新一代神威超算架構 80
5.1.4 神威編程環(huán)境 81
5.1.5 訪存層次 84
5.2 神威眾核編程 85
5.2.1 眾核程序結構 85
5.2.2 從核函數 86
5.2.3 第一個并行程序 87
5.2.4 示例:stencil計算優(yōu)化 92
5.3 神威SIMD 96
5.3.1 SIMD簡介 96
5.3.2 SIMD示例 100
習題 101
第6章 面向DCU架構的程序設計與優(yōu)化 102
6.1 曙光超算及編程環(huán)境概述 102
6.1.1 曙光超算簡介 102
6.1.2 曙光超算節(jié)點架構 102
6.1.3 ROCm/DTK編程環(huán)境 111
6.2 HIP編程方法 112
6.2.1 HIP與CUDA 112
6.2.2 曙光DCU編程模型 113
6.2.3 HIP編程 114
6.3 利用LDS進行數據共享 127
6.3.1 LDS概念 127
6.3.2 LDS使用實例 129
6.4 線程間通信 134
6.4.1 Block級線程通信 134
6.4.2 wavefront級線程通信 135
6.5 reduce優(yōu)化 138
習題 148
第7章 異構混合架構上的算法設計 149
7.1 DCU上的前綴和 149
7.1.1 Prefix Sum簡介 149
7.1.2 并行難點 150
7.1.3 wavefront Scan算法 152
7.1.4 Block Scan算法 154
7.1.5 全局Scan算法 155
7.1.6 更高效的Scan算法 157
7.2 通用矩陣乘 157
7.2.1 GEMM簡介 157
7.2.2 并行難點 158
7.2.3 面向DCU的GEMM優(yōu)化 158
7.2.4 BENCHMARK 163
7.3 DCU上的稀疏矩陣向量乘 164
7.3.1 概述 164
7.3.2 稀疏矩陣CSR存儲格式 164
7.3.3 并行難點 164
7.3.4 高效SpMV算法實現(xiàn) 166
習題 170
第8章 異構混合架構常用算法庫 172
8.1 算法庫介紹 172
8.1.1 常見算法庫層次 172
8.1.2 國內外典型超算上的算法庫 172
8.2 稠密矩陣計算庫:rocBLAS、cuBLAS、swBLAS 173
8.2.1 BLAS接口介紹 173
8.2.2 rocBLAS 177
8.2.3 cuBLAS 181
8.3 稀疏矩陣計算庫:rocSPARSE、cuSPARSE、swSPARSE 182
8.3.1 常用的稀疏矩陣的存儲格式 182
8.3.2 rocSPARSE 185
8.3.3 cuSPARSE 190
8.3.4 swSPARSE 192
8.4 LAPACK線性代數計算庫:特征值、LU 195
8.4.1 LAPACK介紹 195
8.4.2 rocSOLVER 196
8.4.3 cuSOLVER 199
8.5 線性方程組求解 201
8.5.1 常用的求解算法 201
8.5.2 PETSc的層次架構 202
習題 209
第9章 異構混合架構上并行應用程序開發(fā)示例 210
9.1 MISA-MD分子動力學模擬程序異構優(yōu)化 210
9.1.1 分子動力學模擬概述 210
9.1.2 面向DCU的MD優(yōu)化的挑戰(zhàn)性及優(yōu)化思路 211
9.1.3 主機-設備間通信及其優(yōu)化 211
9.1.4 并行計算策略 214
9.1.5 其他訪存優(yōu)化技術 215
9.2 SUMMER-CD 216
9.2.1 軟件介紹 216
9.2.2 物理模型 216
9.2.3 三層并行模型 218
9.2.4 自適應異構數據傳輸 221
9.2.5 基于Stream的計算通信重疊 223
9.3 有限體積法求解圣維南方程組在神威·太湖之光上的優(yōu)化 223
9.3.1 物理模型簡介 223
9.3.2 使用Athread線程庫加速 224
9.3.3 SIMD 226
9.3.4 雙緩沖機制 226
9.3.5 優(yōu)化效果 229