CUDA C編程權威指南 版權信息
- ISBN:9787111565475
- 條形碼:9787111565475 ; 978-7-111-56547-5
- 裝幀:一般膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
CUDA C編程權威指南 本書特色
本書主要介紹了如何使用GPU和利用CUDAC語言對其進行編程的。首先從基本的CUDA概念及結構講起,一步一步地引導讀者進入CUDA的內部世界,由淺入深地介紹了其編程要求及其內部架構,使讀者對其有了整體印象后,逐步深入了解其內部機能,后介紹了GPU的一些專用函數(shù)和注意事項。
CUDA C編程權威指南 內容簡介
本書主要介紹了如何使用GPU和利用CUDAC語言對其進行編程的。首先從基本的CUDA概念及結構講起,一步一步地引導讀者進入CUDA的內部世界,由淺入深地介紹了其編程要求及其內部架構,使讀者對其有了整體印象后,逐步深入了解其內部機能,后介紹了GPU的一些專用函數(shù)和注意事項。
CUDA C編程權威指南 目錄
目 錄
譯者序
推薦序
自序
作者簡介
技術審校者簡介
前言
致謝
第1章 基于CUDA的異構并行計算1
1.1 并行計算1
1.1.1 串行編程和并行編程2
1.1.2 并行性3
1.1.3 計算機架構4
1.2 異構計算6
1.2.1 異構架構7
1.2.2 異構計算范例9
1.2.3 CUDA:一種異構計算平臺10
1.3 用GPU輸出Hello World12
1.4 使用CUDA C編程難嗎15
1.5 總結16
1.6 習題16
第2章 CUDA編程模型18
2.1 CUDA編程模型概述18
2.1.1 CUDA編程結構19
2.1.2 內存管理20
2.1.3 線程管理24
2.1.4 啟動一個CUDA核函數(shù)29
2.1.5 編寫核函數(shù)30
2.1.6 驗證核函數(shù)31
2.1.7 處理錯誤32
2.1.8 編譯和執(zhí)行32
2.2 給核函數(shù)計時35
2.2.1 用CPU計時器計時35
2.2.2 用nvprof工具計時39
2.3 組織并行線程40
2.3.1 使用塊和線程建立矩陣索引40
2.3.2 使用二維網格和二維塊對矩陣求和44
2.3.3 使用一維網格和一維塊對矩陣求和47
2.3.4 使用二維網格和一維塊對矩陣求和48
2.4 設備管理50
2.4.1 使用運行時API查詢GPU信息50
2.4.2 確定*優(yōu)GPU53
2.4.3 使用nvidia-smi查詢GPU信息53
2.4.4 在運行時設置設備54
2.5 總結54
2.6 習題55
第3章 CUDA執(zhí)行模型56
3.1 CUDA執(zhí)行模型概述56
3.1.1 GPU架構概述57
3.1.2 Fermi架構59
3.1.3 Kepler架構61
3.1.4 配置文件驅動優(yōu)化65
3.2 理解線程束執(zhí)行的本質67
3.2.1 線程束和線程塊67
3.2.2 線程束分化69
3.2.3 資源分配74
3.2.4 延遲隱藏76
3.2.5 占用率78
3.2.6 同步81
3.2.7 可擴展性82
3.3 并行性的表現(xiàn)83
3.3.1 用nvprof檢測活躍的線程束84
3.3.2 用nvprof檢測內存操作85
3.3.3 增大并行性86
3.4 避免分支分化88
3.4.1 并行歸約問題88
3.4.2 并行歸約中的分化89
3.4.3 改善并行歸約的分化93
3.4.4 交錯配對的歸約95
3.5 展開循環(huán)97
3.5.1 展開的歸約97
3.5.2 展開線程的歸約99
3.5.3 完全展開的歸約101
3.5.4 模板函數(shù)的歸約102
3.6 動態(tài)并行104
3.6.1 嵌套執(zhí)行105
3.6.2 在GPU上嵌套Hello World106
3.6.3 嵌套歸約109
3.7 總結113
3.8 習題113
第4章 全局內存115
4.1 CUDA內存模型概述115
4.1.1 內存層次結構的優(yōu)點116
4.1.2 CUDA內存模型117
4.2 內存管理124
4.2.1 內存分配和釋放124
4.2.2 內存?zhèn)鬏?25
4.2.3 固定內存127
4.2.4 零拷貝內存128
4.2.5 統(tǒng)一虛擬尋址133
4.2.6 統(tǒng)一內存尋址134
4.3 內存訪問模式135
4.3.1 對齊與合并訪問135
4.3.2 全局內存讀取137
4.3.3 全局內存寫入145
4.3.4 結構體數(shù)組與數(shù)組結構體147
4.3.5 性能調整151
4.4 核函數(shù)可達到的帶寬154
4.4.1 內存帶寬154
4.4.2 矩陣轉置問題155
4.5 使用統(tǒng)一內存的矩陣加法167
4.6 總結171
4.7 習題172
第5章 共享內存和常量內存174
5.1 CUDA共享內存概述174
5.1.1 共享內存175
5.1.2 共享內存分配176
5.1.3 共享內存存儲體和訪問模式176
5.1.4 配置共享內存量181
5.1.5 同步183
5.2 共享內存的數(shù)據(jù)布局185
5.2.1 方形共享內存185
5.2.2 矩形共享內存193
5.3 減少全局內存訪問199
5.3.1 使用共享內存的并行歸約199
5.3.2 使用展開的并行歸約202
5.3.3 使用動態(tài)共享內存的并行歸約204
5.3.4 有效帶寬205
5.4 合并的全局內存訪問205
5.4.1 基準轉置內核205
5.4.2 使用共享內存的矩陣轉置207
5.4.3 使用填充共享內存的矩陣轉置210
5.4.4 使用展開的矩陣轉置211
5.4.5 增大并行性214
5.5 常量內存215
5.5.1 使用常量內存實現(xiàn)一維模板215
5.5.2 與只讀緩存的比較217
5.6 線程束洗牌指令219
5.6.1 線程束洗牌指令的不同形式220
5.6.2 線程束內的共享數(shù)據(jù)222
5.6.3 使用線程束洗牌指令的并行歸約226
5.7 總結227
5.8 習題228
第6章 流和并發(fā)230
6.1 流和事件概述231
6.1.1 CUDA流231
6.1.2 流調度234
6.1.3 流的優(yōu)先級235
6.1.4 CUDA事件235
6.1.5 流同步237
6.2 并發(fā)內核執(zhí)行240
6.2.1 非空流中的并發(fā)內核240
6.2.2 Fermi GPU上的虛假依賴關系242
6.2.3 使用OpenMP的調度操作244
6.2.4 用環(huán)境變量調整流行為245
6.2.5 GPU資源的并發(fā)限制246
6.2.6 默認流的阻塞行為247
6.2.7 創(chuàng)建流間依賴關系248
6.3 重疊內核執(zhí)行和數(shù)據(jù)傳輸249
6.3.1 使用深度優(yōu)先調度重疊249
6.3.2 使用廣度優(yōu)先調度重疊252
6.4 重疊GPU和CPU執(zhí)行254
6.5 流回調255
6.6 總結256
6.7 習題257
第7章 調整指令級原語258
7.1 CUDA指令概述259
7.1.1 浮點指令259
7.1.2 內部函數(shù)和標準函數(shù)261
7.1.3 原子操作指令262
7.2 程序優(yōu)化指令264
7.2.1 單精度與雙精度的比較264
7.2.2 標準函數(shù)與內部函數(shù)的比較266
7.2.3 了解原子指令272
7.2.4 綜合范例277
7.3 總結279
7.4 習題280
第8章 GPU加速庫和OpenACC281
8.1 CUDA庫概述282
8.1.1 CUDA庫支持的作用域283
8.1.2 通用的CUDA庫工作流283
8.2 cuSPARSE庫285
8.2.1 cuSPARSE數(shù)據(jù)存儲格
譯者序
推薦序
自序
作者簡介
技術審校者簡介
前言
致謝
第1章 基于CUDA的異構并行計算1
1.1 并行計算1
1.1.1 串行編程和并行編程2
1.1.2 并行性3
1.1.3 計算機架構4
1.2 異構計算6
1.2.1 異構架構7
1.2.2 異構計算范例9
1.2.3 CUDA:一種異構計算平臺10
1.3 用GPU輸出Hello World12
1.4 使用CUDA C編程難嗎15
1.5 總結16
1.6 習題16
第2章 CUDA編程模型18
2.1 CUDA編程模型概述18
2.1.1 CUDA編程結構19
2.1.2 內存管理20
2.1.3 線程管理24
2.1.4 啟動一個CUDA核函數(shù)29
2.1.5 編寫核函數(shù)30
2.1.6 驗證核函數(shù)31
2.1.7 處理錯誤32
2.1.8 編譯和執(zhí)行32
2.2 給核函數(shù)計時35
2.2.1 用CPU計時器計時35
2.2.2 用nvprof工具計時39
2.3 組織并行線程40
2.3.1 使用塊和線程建立矩陣索引40
2.3.2 使用二維網格和二維塊對矩陣求和44
2.3.3 使用一維網格和一維塊對矩陣求和47
2.3.4 使用二維網格和一維塊對矩陣求和48
2.4 設備管理50
2.4.1 使用運行時API查詢GPU信息50
2.4.2 確定*優(yōu)GPU53
2.4.3 使用nvidia-smi查詢GPU信息53
2.4.4 在運行時設置設備54
2.5 總結54
2.6 習題55
第3章 CUDA執(zhí)行模型56
3.1 CUDA執(zhí)行模型概述56
3.1.1 GPU架構概述57
3.1.2 Fermi架構59
3.1.3 Kepler架構61
3.1.4 配置文件驅動優(yōu)化65
3.2 理解線程束執(zhí)行的本質67
3.2.1 線程束和線程塊67
3.2.2 線程束分化69
3.2.3 資源分配74
3.2.4 延遲隱藏76
3.2.5 占用率78
3.2.6 同步81
3.2.7 可擴展性82
3.3 并行性的表現(xiàn)83
3.3.1 用nvprof檢測活躍的線程束84
3.3.2 用nvprof檢測內存操作85
3.3.3 增大并行性86
3.4 避免分支分化88
3.4.1 并行歸約問題88
3.4.2 并行歸約中的分化89
3.4.3 改善并行歸約的分化93
3.4.4 交錯配對的歸約95
3.5 展開循環(huán)97
3.5.1 展開的歸約97
3.5.2 展開線程的歸約99
3.5.3 完全展開的歸約101
3.5.4 模板函數(shù)的歸約102
3.6 動態(tài)并行104
3.6.1 嵌套執(zhí)行105
3.6.2 在GPU上嵌套Hello World106
3.6.3 嵌套歸約109
3.7 總結113
3.8 習題113
第4章 全局內存115
4.1 CUDA內存模型概述115
4.1.1 內存層次結構的優(yōu)點116
4.1.2 CUDA內存模型117
4.2 內存管理124
4.2.1 內存分配和釋放124
4.2.2 內存?zhèn)鬏?25
4.2.3 固定內存127
4.2.4 零拷貝內存128
4.2.5 統(tǒng)一虛擬尋址133
4.2.6 統(tǒng)一內存尋址134
4.3 內存訪問模式135
4.3.1 對齊與合并訪問135
4.3.2 全局內存讀取137
4.3.3 全局內存寫入145
4.3.4 結構體數(shù)組與數(shù)組結構體147
4.3.5 性能調整151
4.4 核函數(shù)可達到的帶寬154
4.4.1 內存帶寬154
4.4.2 矩陣轉置問題155
4.5 使用統(tǒng)一內存的矩陣加法167
4.6 總結171
4.7 習題172
第5章 共享內存和常量內存174
5.1 CUDA共享內存概述174
5.1.1 共享內存175
5.1.2 共享內存分配176
5.1.3 共享內存存儲體和訪問模式176
5.1.4 配置共享內存量181
5.1.5 同步183
5.2 共享內存的數(shù)據(jù)布局185
5.2.1 方形共享內存185
5.2.2 矩形共享內存193
5.3 減少全局內存訪問199
5.3.1 使用共享內存的并行歸約199
5.3.2 使用展開的并行歸約202
5.3.3 使用動態(tài)共享內存的并行歸約204
5.3.4 有效帶寬205
5.4 合并的全局內存訪問205
5.4.1 基準轉置內核205
5.4.2 使用共享內存的矩陣轉置207
5.4.3 使用填充共享內存的矩陣轉置210
5.4.4 使用展開的矩陣轉置211
5.4.5 增大并行性214
5.5 常量內存215
5.5.1 使用常量內存實現(xiàn)一維模板215
5.5.2 與只讀緩存的比較217
5.6 線程束洗牌指令219
5.6.1 線程束洗牌指令的不同形式220
5.6.2 線程束內的共享數(shù)據(jù)222
5.6.3 使用線程束洗牌指令的并行歸約226
5.7 總結227
5.8 習題228
第6章 流和并發(fā)230
6.1 流和事件概述231
6.1.1 CUDA流231
6.1.2 流調度234
6.1.3 流的優(yōu)先級235
6.1.4 CUDA事件235
6.1.5 流同步237
6.2 并發(fā)內核執(zhí)行240
6.2.1 非空流中的并發(fā)內核240
6.2.2 Fermi GPU上的虛假依賴關系242
6.2.3 使用OpenMP的調度操作244
6.2.4 用環(huán)境變量調整流行為245
6.2.5 GPU資源的并發(fā)限制246
6.2.6 默認流的阻塞行為247
6.2.7 創(chuàng)建流間依賴關系248
6.3 重疊內核執(zhí)行和數(shù)據(jù)傳輸249
6.3.1 使用深度優(yōu)先調度重疊249
6.3.2 使用廣度優(yōu)先調度重疊252
6.4 重疊GPU和CPU執(zhí)行254
6.5 流回調255
6.6 總結256
6.7 習題257
第7章 調整指令級原語258
7.1 CUDA指令概述259
7.1.1 浮點指令259
7.1.2 內部函數(shù)和標準函數(shù)261
7.1.3 原子操作指令262
7.2 程序優(yōu)化指令264
7.2.1 單精度與雙精度的比較264
7.2.2 標準函數(shù)與內部函數(shù)的比較266
7.2.3 了解原子指令272
7.2.4 綜合范例277
7.3 總結279
7.4 習題280
第8章 GPU加速庫和OpenACC281
8.1 CUDA庫概述282
8.1.1 CUDA庫支持的作用域283
8.1.2 通用的CUDA庫工作流283
8.2 cuSPARSE庫285
8.2.1 cuSPARSE數(shù)據(jù)存儲格
展開全部
書友推薦
- >
月亮與六便士
- >
新文學天穹兩巨星--魯迅與胡適/紅燭學術叢書(紅燭學術叢書)
- >
上帝之肋:男人的真實旅程
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)
- >
大紅狗在馬戲團-大紅狗克里弗-助人
- >
我與地壇
- >
隨園食單
- >
羅曼·羅蘭讀書隨筆-精裝
本類暢銷