編輯推薦
係統全麵的GPU知識體係
實踐引導的有效優化方法
切中要害的性能影響因素
通俗翔實的異構協同並行
循序漸進的優化實例解析
精煉真實的GPU性能測評
內容簡介
本書第一篇係統地介紹GPU編程的相關知識,幫助讀者快速入門,並構建GPU知識體係;第二篇和第三篇給齣大量實例,對每個實例進行循序漸進的並行和優化實踐,為讀者提供GPU編程和優化參考;第四篇總結影響GPU性能的關鍵要素(執行核心和存儲體係),量化測評GPU的核心性能參數,給齣CPU/GPU異構係統上覆蓋完全的各種混閤並行模式及其實踐,幫助讀者真正透徹理解GPU。
本書適閤作為計算機及相關專業的教材,也可作為GPU程序開發人員和科研人員的參考書。本書封麵貼有清華大學齣版社防僞標簽,無標簽者不得銷售。
作者簡介
方民權,國防科學技術大學計算機科學與技術專業博士,研究方嚮是高性能計算、異構計算,涉及領域包括遙感圖像處理、計算微電子學、聲呐信號處理和地震模擬等。張衛民博士,研究員,博士生導師,任國防科學技術大學海洋科學與工程研究院總工程師、湖南省氣象協會副理事長、湖南省計算數學協會理事,研究方嚮是數值天氣預報、海洋環境數值模擬、衛星資料、並行算法,科研成果獲部委級一等奬7項、二等奬8項、三等奬1項,齣版著作5部,發錶論文80餘篇。
內頁插圖
目錄
第一篇理論篇
第1章高性能計算概述3
1.1高性能計算概念辨析3
1.1.1並行計算、高性能計算和超級計算3
1.1.2超級計算機與超級計算中心4
1.2計算科學5
1.3高性能計算發展史5
1.4高性能計算簡介6
1.5嚮量機與陣列機8
1.6本章小結9
第2章GPU概述10
2.1GPU是什麼10
2.2協處理器10
2.3GPU與顯卡的關係11
2.4GPU/顯卡購買注意事項11
2.5為什麼要學GPU編程12
2.6GPU與CPU辨析13
2.7GPU發展簡史14
2.8GPU編程方法14
2.9CPU/GPU異構係統16
第3章GPU硬件架構17
3.1GPU架構17
3.1.1Tesla架構18
3.1.2Fermi架構20
3.1.3Kepler架構21
3.1.4Maxwell架構23
3.1.5Pascal架構243.2Kernel的硬件映射28
3.3GPU存儲體係29
3.4GPU計算能力30
GPU編程與優化——大眾高性能計算目錄第4章GPU軟件體係33
4.1GPU軟件生態係統33
4.2CUDA Toolkit34
4.2.1NVCC編譯器34
4.2.2cuobjdump35
4.3CUDA環境安裝36
4.3.1Windows 7安裝CUDA 4.236
4.3.2Linux下安裝CUDA38
第5章CUDA C編程41
5.1CUDA編程模型41
5.2CUDA編程七步麯42
5.3驅動API與運行時API42
5.4CUDA運行時函數43
5.4.1設備管理函數43
5.4.2存儲管理函數45
5.4.3數據傳輸函數48
5.4.4綫程管理函數51
5.4.5流管理函數52
5.4.6事件管理函數52
5.4.7紋理管理函數53
5.4.8執行控製函數55
5.4.9錯誤處理函數55
5.4.10圖形學互操作函數57
5.4.11OpenGL互操作函數58
5.4.12Direct3D互操作函數59
5.5CUDA C語言擴展60
5.6grid�瞓lock�瞭hread三維模型61
第二篇入門篇
第6章嚮量加法67
6.1嚮量加法及其串行代碼67
6.2單block單thread嚮量加68
6.3單block多thread嚮量加68
6.4多block多thread嚮量加69
6.5CUBLAS庫嚮量加法70
6.6實驗結果分析與結論71
6.6.1本書實驗平颱71
6.6.2實驗結果71
6.6.3結論71
6.7知識點總結72
6.8擴展練習75
第7章歸約: 嚮量內積76
7.1嚮量內積及其串行代碼76
7.2單block分散歸約嚮量內積77
7.3單block低綫程歸約嚮量內積78
7.4多block嚮量內積(CPU二次歸約)79
7.5多block嚮量內積(GPU二次歸約)81
7.6基於原子操作的多block嚮量內積81
7.7計數法實現多block嚮量內積84
7.8CUBLAS庫嚮量內積85
7.9實驗結果與結論86
7.9.1實驗結果86
7.9.2結論86
7.10歸約的深入優化探討87
7.10.1block數量和thread數量對歸約性能的影響87
7.10.2算術運算優化88
7.10.3減少同步開銷89
7.10.4循環展開90
7.10.5總結91
7.11知識點總結91
7.12擴展練習94
第8章矩陣乘法95
8.1矩陣乘法及其3種串行代碼95
8.1.1一般矩陣乘法95
8.1.2循環交換矩陣乘法97
8.1.3轉置矩陣乘法98
8.1.4實驗結果與最優串行矩陣乘99
8.2grid綫程循環矩陣乘法100
8.3block綫程循環矩陣乘法101
8.4行共享存儲矩陣乘法101
8.5棋盤陣列矩陣乘法103
8.6判斷移除105
8.7CUBLAS矩陣乘法106
8.8實驗結果分析與結論108
8.8.1矩陣乘精度分析108
8.8.2實驗結果分析110
8.8.3浮點運算能力分析111
8.9行共享存儲矩陣乘法改進111
8.10知識點總結113
8.11擴展練習115
第9章矩陣轉置116
9.1矩陣轉置及其串行代碼116
9.21D矩陣轉置117
9.32D矩陣轉置118
9.4共享存儲2D矩陣轉置119
9.5共享存儲2D矩陣轉置diagonal優化120
9.6實驗結果分析與結論121
9.7共享存儲2D矩陣轉置的深入優化122
9.8知識點總結124
9.9擴展練習125
第三篇提高篇
第10章捲積129
10.1捲積及其串行實現129
10.1.1一維捲積129
10.1.2二維捲積131
10.2GPU上1D捲積134
10.3M常量1D捲積135
10.4M共享1D捲積136
10.5N共享1D捲積137
10.6實驗結果分析139
10.6.1擴展法1D捲積實驗結果分析139
10.6.2判斷法與擴展法1D捲積對比140
10.6.3加速比分析141
10.6.4綫程維度對性能的影響141
10.72D捲積的GPU移植與優化142
10.7.1GPU上2D捲積142
10.7.2M常量2D捲積143
10.7.3M常量N共享2D捲積143
10.7.42D捲積實驗結果分析145
10.8知識點總結145
10.9擴展練習147
第11章曼德博羅特集148
11.1曼德博羅特集及其串行實現148
11.2曼德博羅特集的GPU映射150
11.3一些優化嘗試及效果152
11.3.1訪存連續152
11.3.2uchar4訪存閤並153
11.3.34種零拷貝153
11.3.4總結分析155
11.4計算通信重疊優化156
11.5突破kernel執行時間限製159
11.6知識點總結160
11.7擴展練習162
第12章掃描: 前綴求和163
12.1前綴求和及其串行代碼163
12.2Kogge�睸tone並行前綴和164
12.2.1直接Kogge�睸tone分段前綴和164
12.2.2交錯Kogge�睸tone分段前綴和165
12.2.3完整Kogge�睸tone前綴和166
12.3Brent�睰ung並行前綴和168
12.3.1Brent�睰ung分段前綴和169
12.3.2兩倍數據的Brent�睰ung分段前綴和170
12.3.3避免bank conflict的兩倍數據Brent�睰ung分段前綴和171
12.3.4完整Brent�睰ung前綴和173
12.4warp分段的Kogge�睸tone前綴求和174
12.5實驗結果分析與結論177
12.6知識點總結179
12.7擴展練習180第13章排序181
13.1串行排序及其性能181
13.1.1選擇排序181
13.1.2冒泡排序182
13.1.3快速排序182
13.1.4基數排序183
13.1.5雙調排序網絡185
13.1.6閤並排序186
13.1.7串行排序性能對比187
13.2基數排序188
13.2.1基數排序概述188
13.2.2單block基數排序189
13.2.3基於thrust庫的基數排序196
13.3雙調排序網絡197
13.3.1雙調排序網絡概述197
13.3.2單block雙調排序網絡199
13.3.3多block雙調排序網絡202
13.4快速排序206
13.5閤並排序207
13.6實驗結果分析與結論208
13.7知識點總結209
13.8擴展練習210
第14章幾種簡單圖像處理211
14.1圖像直方圖統計211
14.1.1串行直方圖統計211
14.1.2並行直方圖統計211
14.1.3實驗結果與分析212
14.2中值濾波213
14.2.1串行中值濾波214
14.2.21D並行中值濾波215
14.2.3共享1D中值濾波216
14.2.4雙重共享1D中值濾波218
14.2.52D並行中值濾波221
14.2.6共享2D中值濾波222
14.2.7共享2D中值濾波的改進227
14.2.8實驗結果與分析229
14.3均值濾波231
14.3.1串行均值濾波231
14.3.2並行均值濾波232
14.3.3實驗結果與分析233
第四篇核心篇
第15章GPU執行核心237
15.1概述237
15.2算術運算支持238
15.2.1整數運算238
15.2.2浮點運算239
15.3算術運算性能240
15.4分支處理242
15.5同步與測時246
15.5.1同步246
15.5.2測時247
15.6數學函數247
15.7warp與block原語249
15.7.1warp原語249
15.7.2block原語250
15.8kernel啓動、綫程切換和循環處理251
第16章GPU存儲體係254
16.1概述254
16.2寄存器259
16.3局部存儲261
16.4共享存儲器264
16.4.1共享存儲使用264
16.4.2bank conflict265
16.4.3volatile關鍵字266
16.4.4共享存儲原子操作267
16.5常量存儲268
16.6全局存儲269
16.6.1全局存儲的使用269
16.6.2全局存儲的閤並訪問271
16.6.3利用紋理緩存通道訪問全局存儲271
16.7紋理存儲273
16.7.1CUDA數組273
16.7.2紋理存儲的操作和限製274
16.7.3讀取模式、紋理坐標、濾波模式和尋址模式276
16.7.4錶麵存儲278
16.8主機端內存281
16.9零拷貝操作283
第17章GPU關鍵性能測評284
17.1GPU性能測評概述284
17.2GPU參數獲取286
17.2.1GPU選擇286
17.2.2詳細設備參數獲取287
17.3精確測時方法匯總288
17.3.1clock測時289
17.3.2gettimeofday測時289
17.3.3CUDA事件測時289
17.3.4cutil庫函數測時290
17.4GPU預熱與啓動開銷290
17.5GPU浮點運算能力291
17.6GPU訪存帶寬293
17.7GPU通信帶寬295
17.8NVIDIA Visual Profiler296
17.9程序性能對比約定298
第18章CPUs和GPUs協同299
18.1協同優化基點299
18.1.1CPU並行矩陣乘基點299
18.1.2GPU並行矩陣乘基點300
18.2CPU/GPU協同300
18.3多GPU協同305
18.3.1CUDA版本306
18.3.2OpenMP+CUDA308
18.3.3MPI+CUDA311
18.4CPUs/GPUs協同314
18.4.1CUDA版本314
18.4.2OpenMP+CUDA319
18.4.3MPI+OpenMP+CUDA324
18.5本章小結329
附錄
附錄A判斷法1D捲積代碼333
附錄A.1判斷法1D捲積basic版333
附錄A.2判斷法1D捲積constant版334
附錄A.3判斷法1D捲積shared版336
附錄A.4判斷法1D捲積cache版337
附錄B曼德博羅特集的係列優化代碼340
附錄B.1完整版串行C代碼340
附錄B.2cuda_1_0343
附錄B.3cuda_0_2345
附錄B.4cuda_zerocopy346
附錄B.5cuda_1_0_zerocopy348
附錄B.6cuda_0_0_zerocopy349
附錄B.7cuda_0_2_zerocopy351
附錄B.8cuda_2352
附錄B.9cuda_1_2354
附錄C幾種圖像處理完整源碼357
附錄C.1BMP圖像讀寫頭文件357
附錄C.2圖像直方圖串行代碼373
附錄C.3串行中值濾波代碼374
附錄C.4並行均值濾波相關代碼376
附錄Dnvprof幫助菜單383
附錄ENVCC幫助菜單388
附錄F幾種排序算法源代碼399
附錄F.1bitonic_sort_block函數399
附錄F.2GPU快速排序完整代碼400
附錄F.3GPU閤並排序完整代碼408
參考文獻417
GPU編程與優化 大眾高性能計算 epub pdf mobi txt 電子書 下載 2024
GPU編程與優化 大眾高性能計算 下載 epub mobi pdf txt 電子書