開啟主選單

求真百科

GPU並行算法·N·S方程高性能計算

來自 孔夫子網 的圖片

GPU並行算法·N·S方程高性能計算》,白智勇,李志輝 著,出版社: 科學出版社。

讀書,可以與時俱進,開闊自己,提高自己,充實自己,完善自己,是全球文化[1]科技知識擴容和更新的需要,是知識[2]經濟和社會發展的要求。

目錄

內容簡介

本書共九章,重點通過基礎知識講解、算例剖析和技巧提示,引導讀者熟悉GPU並行算法、CUDA Fortran基礎知識,進而掌握基於CUDA Fortran的GPU高性能計算應用軟件設計方法。其中,第1章介紹相關研究背景;第2~6章介紹基於CUDA Fortran的GPU通用計算基本概念、編程方法與優化原則;第7~9章介紹基於MPI+CUDA的N-S方程數值求解。書中的示例的構思以及分析過程是本書…具價值的部分,讀者通過閱讀這些內容,對GPGPU技術做到融會貫通、舉一反三,只要掌握了這些簡單的示例,更複雜的問題也能迎刃而解。在本書的幫助下,讀者不需熟悉GPU硬件或者CUDAC(雖然熟悉這兩者有助於使用本書)就可完成GPU的學習和使用。

目錄

第1章 緒論 1

1.1 一個故事:為什麼需要並行 1

1.2 並行計算簡介 3

1.2.1 機群系統 3

1.2.2 並行計算與多核技術 4

1.2.3 異構計算機 6

1.3 GPU計算與CUDA 9

1.4 CUDA Fortran 14

1.5 GPU並行計算技術與高超聲速流動模擬 15

參考文獻 19

第2章 CUDA Fortran編譯器 24

2.1 PGI Fortran編譯器簡介 24

2.2 編譯CUDA Fortran程序 35

2.2.1 可視化版PGI編譯器的使用 35

2.2.2 使用命令行編譯程序 43

2.3 Fortran程序驅動GPU 44

2.3.1 GPU算法的CUDA Fortran程序實現 44

2.3.2 在主機與CUDA卡之間傳輸數據 47

2.3.3 GPU端的計算 48

2.4 錯誤信息獲取 51

參考文獻 52

第3章 CUDA線程模型 54

3.1 CUDA並行計算思維 54

3.1.1 並行算法設計 54

3.1.2 SIMD模型 56

3.1.3 SIMT模型 57

3.2 CUDA線程的主要特性 58

3.2.1 子程序屬性限定符attributes 58

3.2.2 kernel函數 59

3.3 CUDA線程結構 60

3.3.1 線程block和線程grid 60

3.3.2 block內線程與block間線程 63

3.3.3 CUDA線程與GPU硬件對應關係 63

3.3.4 CUDA線程設計 64

3.4 執行配置 66

3.5 device子程序 74

3.6 自動生成kernel簡介 75

3.6.1 !$cuf 基本用法 75

3.6.2 !$cuf 使用注意事項 76

3.7 使用module封裝GPU數據與程序 77

3.7.1 用module封裝數據 77

3.7.2 用module封裝設備端子程序 78

3.8 CUDA線程同步 79

3.9 小結 80

參考文獻 81

第4章 CUDA存儲模型 82

4.1 GPU設備端變量 82

4.1.1 GPU內存 82

4.1.2 變量限定符 83

4.1.3 變量類型與內存分配 84

4.2 device變量 84

4.3 managed變量 88

4.4 pinned變量 90

4.5 shared變量 93

4.6 local變量 96

4.7 constant變量 96

4.8 texture變量 97

4.9 設備端派生數據類型 98

參考文獻 100

第5章 CUDA任務級並行 101

5.1 CUDA流管理 101

5.1.1 什麼是流 101

5.1.2 流的創建與銷毀 102

5.1.3 流的使用 104

5.1.4 流的用法舉例 107

5.2 CUDA事件管理 109

5.2.1 什麼是事件 109

5.2.2 事件基本用法 110

5.2.3 事件在任務計時中的應用 111

5.2.4 事件在任務管理中的應用 116

5.3 GPU設備管理 118

5.3.1 設備切換 118

5.3.2 設備參數查詢與修改 119

5.3.3 設備端變量存儲位置 123

5.3.4 GPU卡間數據通信 124

參考文獻 126

第6章 CUDA Fortran程序優化 127

6.1 Fortran程序性能優化一般準則 127

6.2 矩陣乘法CUDA程序優化 130

6.2.1 優化一:使用local變量 132

6.2.2 優化二:使用shared變量 132

6.2.3 kernel的調用 135

6.3 線程block優化設計 136

6.3.1 GPU微架構與CUDA線程模型 136

6.3.2 線程block設計 140

6.3.3 local內存使用技巧 142

參考文獻 143

第7章 高超聲速流場數學模型 144

7.1 高超聲速繞流流場問題描述 144

7.2 控制方程 145

7.3 組分熱力學特性 148

7.3.1 統計熱力學方法 148

7.3.2 擬合函數法 149

7.4 組分輸運特性 150

7.4.1 黏性係數 150

7.4.2 熱傳導係數 151

7.4.3 擴散係數 151

7.4.4 混合氣體輸運特性 152

7.5 化學動力學模型 152

7.5.1 純空氣化學反應 152

7.5.2 化學反應源項 153

7.5.3 化學反應速率係數 154

7.6 N-S方程空間離散 155

7.6.1 定解條件 156

7.6.2 有限體積方法 158

7.6.3 差分格式 158

7.6.4 通量分裂 159

7.6.5 高階迎風型格式 161

7.6.6 高維問題 163

7.7 時間迭代 165

7.7.1 顯式方法 165

7.7.2 隱式方法 167

7.8 邊界條件 170

7.8.1 虛擬網格法 171

7.8.2 物理邊界條件處理方法 171

7.8.3 壁面催化 174

參考文獻 174

第8章 N-S方程並行算法 177

8.1 並行計算術語 177

8.2 MPI並行環境 179

8.2.1 MPI進程級並行計算 179

8.2.2 MPI程序編譯與運行 180

8.2.3 並行進程的創建與回收 181

8.2.4 MPI通信 182

8.2.5 非阻塞通信 186

8.2.6 組通信 188

8.2.7 MPI高級話題 189

8.3 流場區域分解的N-S方程並行算法 192

8.3.1 高超聲速流場的N-S方程數值求解 192

8.3.2 流場並行算法 194

8.3.3 流場並行算法優化 195

8.4 結構網格N-S方程並行計算負載均衡 198

8.4.1 並行計算負載估算 198

8.4.2 LPT負載分配 199

8.4.3 區域分解對CFD效率的影響 200

8.4.4 結構網格塊二次剖分算法 202

8.5 N-S方程數值求解大規模高性能並行計算驗證 206

8.5.1 高超聲速流場計算軟件HAS簡介 206

8.5.2 雙橢球模型風洞實驗流場計算 206

8.5.3 Apollo指令艙高超聲速繞流計算 209

8.5.4 高超聲速圓柱繞流大規模並行計算 211

參考文獻 212

第9章 N-S方程求解的GPU異構並行算法 214

9.1 數據依賴關係 214

9.1.1 數據依賴性分析 214

9.1.2 無數據依賴隱式算法 215

9.2 CFD功能模塊kernel設計 220

9.2.1 無黏項空間離散 221

9.2.2 流場參數空間梯度計算 228

9.2.3 黏性項空間離散 231

9.2.4 DPLUR隱式計算模塊 231

9.2.5 其他模塊 233

9.3 邊界條件處理技術 234

9.3.1 適於CUDA線程的邊界網格單元分配方法 235

9.3.2 對接邊界數據交換 236

9.4 CFD功能模塊kernel調用 237

9.4.1 線程block與grid設計 237

9.4.2 CUDA任務級並行 239

9.4.3 多GPU設備問題 241

9.4.4 提升GPU並行計算效率的輔助措施 242

9.5 數據結構 246

9.5.1 GPU設備數據存儲策略 246

9.5.2 常量數據定義 246

9.5.3 邊界條件數據結構 248

9.5.4 網格塊數據結構 249

9.6 CUDA算法的可靠性 251

9.6.1 確保GPU異構並行CFD算法可靠性的基本方法 251

9.6.2 算例驗證 252

參考文獻 260

附錄A 純空氣化學非平衡模型相關常數 262

附錄B N-S方程及其無黏通量特徵分裂 271

B.1 N-S方程無量綱化 271

B.2 雅可比矩陣及其特徵值 272

B.3 以特徵值表達的雅可比矩陣 274

B.4 以特徵值表達的無黏通量 276

B.5 無黏通量Van Leer分裂表達式 276

附錄C 化學源項及黏性通量雅可比矩陣 278

C.1 化學源項雅可比矩陣 278

C.2 黏性通量雅可比矩陣及其分裂 279

附錄D 結構網格半自動生成工具AutoMesh 283

參考文獻

  1. 文化的作用是什麼,光明網,2015-10-14
  2. 什麼是知識?,搜狐,2016-08-13