《CUDA專傢手冊:GPU編程權威指南》
中文版序
推薦序
譯者序
前言
第一部分基礎知識
第1章簡介2
1.1方法4
1.2代碼4
1.2.1驗證型代碼5
1.2.2演示型代碼5
1.2.3探究型代碼5
1.3資源5
1.3.1開源代碼5
1.3.2cuda專傢手冊庫(chlib)6
1.3.3編碼風格6
1.3.4cuda sdk6
1.4結構6
第2章硬件架構8
2.1cpu配置8
2.1.1前端總綫9
2.1.2對稱處理器簇9
2.1.3非一緻內存訪問(numa)10
2.1.4集成的pcie12
2.2集成gpu13
2.3多gpu14
2.4cuda中的地址空間17
2.4.1虛擬尋址簡史17
2.4.2不相交的地址空間20
2.4.3映射鎖頁內存21
2.4.4可分享鎖頁內存21
2.4.5統一尋址23
2.4.6點對點映射24
2.5cpu/gpu交互24
2.5.1鎖頁主機內存和命令緩衝區25
2.5.2cpu/gpu並發26
2.5.3主機接口和內部gpu同步29
2.5.4gpu間同步31
2.6gpu架構31
2.6.1綜述31
2.6.2流處理器簇34
2.7延伸閱讀37
第3章軟件架構39
3.1軟件層39
3.1.1cuda運行時和驅動程序40
3.1.2驅動程序模型41
3.1.3nvcc、ptx和微碼43
3.2設備與初始化45
3.2.1設備數量46
3.2.2設備屬性46
3.2.3無cuda支持情況48
3.3上下文50
3.3.1生命周期與作用域51
3.3.2資源預分配51
3.3.3地址空間52
3.3.4當前上下文棧52
3.3.5上下文狀態53
3.4模塊與函數53
3.5內核(函數)55
3.6設備內存56
3.7流與事件57
3.7.1軟件流水綫57
3.7.2流迴調57
3.7.3null流57
3.7.4事件58
3.8主機內存59
3.8.1鎖頁主機內存60
3.8.2可分享的鎖頁內存60
3.8.3映射鎖頁內存60
3.8.4主機內存注冊60
3.9cuda數組與紋理操作61
3.9.1紋理引用61
3.9.2錶麵引用63
3.10圖形互操作性63
3.11cuda運行時與cuda驅動程序api65
第4章軟件環境69
4.1nvcc——cuda編譯器驅動程序69
4.2ptxas——ptx匯編工具73
4.3cuobjdump76
4.4nvidia-smi77
4.5亞馬遜web服務79
4.5.1命令行工具79
4.5.2ec2和虛擬化79
4.5.3密鑰對80
4.5.4可用區域(az)和地理區域81
4.5.5s381
4.5.6ebs81
4.5.7ami82
4.5.8ec2上的linux82
4.5.9ec2上的windows83
第二部分cuda編程
第5章內存88
5.1主機內存89
5.1.1分配鎖頁內存89
5.1.2可共享鎖頁內存90
5.1.3映射鎖頁內存90
5.1.4寫結閤鎖頁內存91
5.1.5注冊鎖頁內存91
5.1.6鎖頁內存與統一虛擬尋址92
5.1.7映射鎖頁內存用法92
5.1.8numa、綫程親和性與鎖頁內存93
5.2全局內存95
5.2.1指針96
5.2.2動態內存分配97
5.2.3查詢全局內存數量100
5.2.4靜態內存分配101
5.2.5內存初始化api102
5.2.6指針查詢103
5.2.7點對點內存訪問104
5.2.8讀寫全局內存105
5.2.9閤並限製105
5.2.10驗證實驗:內存峰值帶寬107
5.2.11原子操作111
5.2.12全局內存的紋理操作113
5.2.13ecc(糾錯碼)113
5.3常量內存114
5.3.1主機與設備常量內存114
5.3.2訪問常量內存114
5.4本地內存115
5.5紋理內存118
5.6共享內存118
5.6.1不定大小共享內存聲明119
5.6.2束同步編碼119
5.6.3共享內存的指針119
5.7內存復製119
5.7.1同步內存復製與異步內存復製120
5.7.2統一虛擬尋址121
5.7.3cuda運行時121
5.7.4驅動程序api123
第6章流與事件125
6.1cpu/gpu的並發:隱藏驅動程序開銷126
6.2異步的內存復製129
6.2.1異步的內存復製:主機端到設備端130
6.2.2異步內存復製:設備端到主機端130
6.2.3null流和並發中斷131
6.3cuda事件:cpu/gpu同步133
6.3.1阻塞事件135
6.3.2查詢135
6.4cuda事件:計時135
6.5並發復製和內核處理136
6.5.1concurrencymemcpykernel.cu137
6.5.2性能結果141
6.5.3中斷引擎間的並發性142
6.6映射鎖頁內存143
6.7並發內核處理145
6.8gpu/gpu同步:cudastreamwaitevent()146
6.9源代碼參考147
第7章內核執行148
7.1概況148
7.2語法149
7.2.1局限性150
7.2.2高速緩存和一緻性151
7.2.3異步與錯誤處理151
7.2.4超時152
7.2.5本地內存152
7.2.6共享內存153
7.3綫程塊、綫程、綫程束、束內綫程153
7.3.1綫程塊網格153
7.3.2執行保證156
7.3.3綫程塊與綫程id156
7.4占用率159
7.5動態並行160
7.5.1作用域和同步161
7.5.2內存模型162
7.5.3流與事件163
7.5.4錯誤處理163
7.5.5編譯和鏈接164
7.5.6資源管理164
7.5.7小結165
第8章流處理器簇167
8.1內存168
8.1.1寄存器168
8.1.2本地內存169
8.1.3全局內存170
8.1.4常量內存171
8.1.5共享內存171
8.1.6柵欄和一緻性173
8.2整型支持174
8.2.1乘法174
8.2.2其他操作(位操作)175
8.2.3漏鬥移位(sm 3.5)175
8.3浮點支持176
8.3.1格式176
8.3.2單精度(32位)180
8.3.3雙精度(64位)181
8.3.4半精度(16位)181
8.3.5案例分析:float到half的轉換182
8.3.6數學函數庫185
8.3.7延伸閱讀190
8.4條件代碼191
8.4.1斷定191
8.4.2分支與匯聚191
8.4.3特殊情況:最小值、最大值和絕對值192
8.5紋理與錶麵操作193
8.6其他指令193
8.6.1綫程束級原語193
8.6.2綫程塊級原語194
8.6.3性能計數器195
8.6.4視頻指令195
8.6.5特殊寄存器196
8.7指令集196
第9章多gpu203
9.1概述203
9.2點對點機製204
9.2.1點對點內存復製204
9.2.2點對點尋址205
9.3uva:從地址推斷設備206
9.4多gpu間同步207
9.5單綫程多gpu方案208
9.5.1當前上下文棧208
9.5.2n-體問題210
9.6多綫程多gpu方案212
第10章紋理操作216
10.1簡介216
10.2紋理內存217
10.2.1設備內存217
10.2.2cuda數組與塊的綫性尋址218
10.2.3設備內存與cuda數組對比222
10.3一維紋理操作223
10.4紋理作為數據讀取方式226
10.4.1增加有效地址範圍226
10.4.2主機內存紋理操作228
10.5使用非歸一化坐標的紋理操作230
10.6使用歸一化坐標的紋理操作237
10.7一維錶麵內存的讀寫238
10.8二維紋理操作240
10.9二維紋理操作:避免復製242
10.9.1設備內存上的二維紋理操作242
10.9.2二維錶麵內存的讀寫243
10.10三維紋理操作244
10.11分層紋理245
10.11.1一維分層紋理246
10.11.2二維分層紋理246
10.12最優綫程塊大小選擇以及性能246
10.13紋理操作快速參考248
10.13.1硬件能力248
10.13.2cuda運行時249
10.13.3驅動api250
第三部分實例
第11章流式負載254
11.1設備內存255
11.2異步內存復製258
11.3流259
11.4映射鎖頁內存260
11.5性能評價與本章小結261
第12章歸約算法263
12.1概述263
12.2兩遍歸約265
12.3單遍歸約269
12.4使用原子操作的歸約271
12.5任意綫程塊大小的歸約272
12.6適應任意數據類型的歸約273
12.7基於斷定的歸約276
12.8基於洗牌指令的綫程束歸約277
第13章掃描算法278
13.1定義與變形278
13.2概述279
13.3掃描和電路設計281
13.4cuda實現284
13.4.1先掃描再扇齣284
13.4.2先歸約再掃描(遞歸)288
13.4.3先歸約再掃描(兩階段)291
13.5綫程束掃描294
13.5.1零填充295
13.5.2帶模闆的版本296
13.5.3綫程束洗牌297
13.5.4指令數對比298
13.6流壓縮300
13.7參考文獻(並行掃描算法)302
13.8延伸閱讀(並行前綴求和電路)303
第14章n-體問題304
14.1概述305
14.2簡單實現309
14.3基於共享內存實現312
14.4基於常量內存實現313
14.5基於綫程束洗牌實現315
14.6多gpu及其擴展性316
14.7cpu的優化317
14.8小結321
14.9參考文獻與延伸閱讀323
第15章圖像處理的歸一化相關係數計算324
15.1概述324
15.2簡單的紋理實現326
15.3常量內存中的模闆329
15.4共享內存中的圖像331
15.5進一步優化334
15.5.1基於流處理器簇的實現代碼334
15.5.2循環展開335
15.6源代碼336
15.7性能評價337
15.8延伸閱讀339
附錄acuda專傢手冊庫340
術語錶347
· · · · · · (
收起)
評分
☆☆☆☆☆
CUDA進階。接下來兩周要做Multi-GPU的DNN數據並行訓練,這本書讀的正是時候。 2018 再讀瞭一遍
評分
☆☆☆☆☆
CUDA進階。接下來兩周要做Multi-GPU的DNN數據並行訓練,這本書讀的正是時候。 2018 再讀瞭一遍
評分
☆☆☆☆☆
隻給兩星,因為翻譯太差,有些句子非得像對待英語的復雜句式那樣,要用語法拆解句子結構,纔能看明白,然後瞬間就能想象齣英文原文是怎麼寫的。 Yet, this book is awesome for those people who want to get advanced skills in CUDA programming.
評分
☆☆☆☆☆
隻給兩星,因為翻譯太差,有些句子非得像對待英語的復雜句式那樣,要用語法拆解句子結構,纔能看明白,然後瞬間就能想象齣英文原文是怎麼寫的。 Yet, this book is awesome for those people who want to get advanced skills in CUDA programming.
評分
☆☆☆☆☆
CUDA進階。接下來兩周要做Multi-GPU的DNN數據並行訓練,這本書讀的正是時候。 2018 再讀瞭一遍