-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

CUDA專家手冊:GPU編程權威指南

( 簡體 字)
作者:(美) Nicholas Wilt 著類別:1. -> 教材 -> 數位影像處理
譯者:
出版社:機械工業出版社CUDA專家手冊:GPU編程權威指南 3dWoo書號: 39463
詢問書籍請說出此書號!

缺書
NT售價: 425

出版日:9/1/2014
頁數:350
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111472650
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

在讀本書,意味著我無須再向你兜售CUDA。你應該已經對CUDA有所了解,可能使用過英偉達的SDK和文檔,抑或參加過并行程序設計的課程,再或者閱讀過類似《CUDA by Example》(Jason Sanders和Edward Kandrot著,2011年由Addison-Wesley出版)這樣的入門書籍。

我在審校《CUDA by Example》時,驚詫于該書內容的淺顯。它假設讀者是零基礎,試圖描述從內存類型及其實際應用到圖形互操作性,甚至到原子操作等方方面面的內容。它是很優秀的CUDA入門書籍,但也只能做到泛泛而談。對于更深層次的知識,例如,平臺的工作機理、GPU的硬件結構、編譯器驅動程序nvcc以及以前綴求和(“掃描”)為代表的基本并行算法,則鮮有涉及。

本書考慮到不同基礎的讀者,旨在幫助CUDA新手進階中級水平,同時幫助中級程序員繼續提升他們的水平到一個新高度。對于入門性質的書籍,最好從頭到尾閱讀,而對本書則可以根據需要選讀。如果你正準備建立支持CUDA的新平臺并在上面進行編程,建議你精讀第2章。如果你正納悶你的應用程序是否將受益于CUDA流帶來的額外并發性,你應該查看第6章。其他的章節分別提供了軟件架構、GPU的紋理操作和流處理器簇等GPU子系統的詳細描述,還有依據不同數據存取模式和在并行算法領域的重要程度而精心挑選的應用案例。盡管不同章之間難免存在交互引用,但每一章的內容都是相對獨立的。

本書將披露包括CUDA 5.0在內的最新技術。最近幾年,CUDA和它的目標平臺得到了長足發展。在《CUDA by Example》出版之際,GeForce GTX 280(GT200)才剛剛面世。迄今,CUDA硬件已歷經兩代演變。因此,本書除了在如映射鎖頁內存(mapped pinned memory)的現有特性上不吝筆墨外,還特別關注CUDA支持的新特性,像費米架構的ballot、開普勒架構的shuffle、64位和統一虛擬尋址特性以及動態并行(dynamic parallelism)等。此外,本書還將討論最近的平臺進展,例如英特爾沙橋(Sandy Bridge)CPU上集成的PCIe總線控制器。

尊敬的讀者,你可以全篇通讀本書,也可以把它放于電腦邊隨時查閱。但不管怎樣,我真誠地希冀你能從中得到樂趣,如同我執筆分享時一樣快意。

致謝

借此機會,感謝英偉達公司的朋友們。他們耐心地為我釋疑、檢視我的作品并反饋建設性意見。特別的謝意送給Mark Harris、Norbert Juffa和Lars Nyland。

本書的審校者在成稿之前審閱了本書,他們付出了大量時間,提供的寶貴意見提高了本書的質量和清晰性,保證了技術的正確性。在此,特別感謝Andre Brodtkorb、Scott Le Grand、Allan MacKinnon、Romelia Salomon-Ferrer和Patrik Tennberg的反饋意見。

本書的寫作過程歷經了重重困難,如果沒有編輯Peter Gordon的超凡耐心和支持,很難最終呈現給大家。Peter的助手Kim Boedigheimer為本項目的順利完成做了大量工作,幫助我設定了項目的各種專業標準。對她在征求、協調評審意見以及在本書成稿之后把本書上傳到Safari網站的整個過程中付出的努力,表示特別感謝。

在本書的寫作過程中,我的妻子Robin和我的兒子Benjamin、Samuel和Gregory一直對我支持有加,謝謝他們。
內容簡介:

詳細討論CUDA的硬件和軟件,包括CUDA 5.0和開普勒架構的最新特性。每個CUDA開發人員,不論新手還是高手,都可以在這里找到感興趣的內容并即時上手。新晉的CUDA開發者將理解硬件如何處理命令以及驅動程序如何檢查狀態;更有經驗者,將會在驅動程序API、上下文遷移以及如何讓CPU/GPU最有效率地進行數據交換和同步等骨灰級的主題上得到指導。
本書所附的開源代碼有25000多行,歡迎開發者自由重用。

本書不僅是權威手冊,也是實用代碼大全。全書分為以下三個部分:
第一部分是基礎知識概述,對支持CUDA的硬件和軟件進行高屋建瓴的描述。
第二部分是CUDA編程細節,對CUDA進行全方位的描述,包括內存,流和事件,執行模型(包括動態并行特性以及CUDA 5.0和SM 3.5的新特性),流處理器簇(包括SM 3.5的所有功能介紹),多GPU編程,紋理操作。這部分附帶的源代碼作為可重用的驗證型代碼和演示型代碼,旨在展示特殊的硬件特性或強調特定的應用方法。
第三部分是案例剖析,深入分析精選的CUDA應用場景以及關鍵的并行算法,包括流式負載、歸約、掃描(并行前綴求和)、N-體問題和圖像處理,這些算法全方位涵蓋各種CUDA應用場景。



本書由英偉達公司CUDA首席架構師Nicholas Wilt親筆撰寫, 深度解析GPU的架構、系統軟件、編程環境,以及CUDA編程各方面的知識和各種優化技術,包含大量實用代碼示例,是并行程序開發領域最有影響力的著作之一。
本書分為三部分,共15章。第一部分(第1~4章)介紹CUDA開發的基礎知識、硬件/軟件架構和軟件環境;第二部分(第5~10章)詳細解析CUDA開發的各個方面,包括內存、流與事件、內核執行、流處理器簇、多GPU編程和紋理操作;第三部分(第11~15章)利用多個實例,深入分析流式負載、歸約算法、掃描算法、N-體問題和圖像處理的歸一化相關系數計算,介紹如何應用各種優化技術。
目錄:

中文版序

推薦序

譯者序

前 言

第一部分 基礎知識

第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.2 CUDA專家手冊庫(chLib) 6

1.3.3 編碼風格 6

1.3.4 CUDA SDK 6

1.4 結構 6

第2章 硬件架構 8

2.1 CPU配置 8

2.1.1 前端總線 9

2.1.2 對稱處理器簇 9

2.1.3 非一致內存訪問(NUMA) 10

2.1.4 集成的PCIe 12

2.2 集成GPU 13

2.3 多GPU 14

2.4 CUDA中的地址空間 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.5 CPU/GPU交互 24

2.5.1 鎖頁主機內存和命令緩沖區 25

2.5.2 CPU/GPU并發 26

2.5.3 主機接口和內部GPU同步 29

2.5.4 GPU間同步 31

2.6 GPU架構 31

2.6.1 綜述 31

2.6.2 流處理器簇 34

2.7 延伸閱讀 37

第3章 軟件架構 39

3.1 軟件層 39

3.1.1 CUDA運行時和驅動程序 40

3.1.2 驅動程序模型 41

3.1.3 nvcc、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.3 NULL流 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.9 CUDA數組與紋理操作 61

3.9.1 紋理引用 61

3.9.2 表面引用 63

3.10 圖形互操作性 63

3.11 CUDA運行時與CUDA驅動程序API 65

第4章 軟件環境 69

4.1 nvcc——CUDA編譯器驅動程序 69

4.2 ptxas——PTX匯編工具 73

4.3 cuobjdump 76

4.4 nvidia-smi 77

4.5 亞馬遜Web服務 79

4.5.1 命令行工具 79

4.5.2 EC2和虛擬化 79

4.5.3 密鑰對 80

4.5.4 可用區域(AZ)和地理區域 81

4.5.5 S3 81

4.5.6 EBS 81

4.5.7 AMI 82

4.5.8 EC2上的Linux 82

4.5.9 EC2上的Windows 83

第二部分 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.8 NUMA、線程親和性與鎖頁內存 93

5.2 全局內存 95

5.2.1 指針 96

5.2.2 動態內存分配 97

5.2.3 查詢全局內存數量 100

5.2.4 靜態內存分配 101

5.2.5 內存初始化API 102

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.13 ECC(糾錯碼) 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.3 CUDA運行時 121

5.7.4 驅動程序API 123

第6章 流與事件 125

6.1 CPU/GPU的并發:隱藏驅動程序開銷 126

6.2 異步的內存復制 129

6.2.1 異步的內存復制:主機端到設備端 130

6.2.2 異步內存復制:設備端到主機端 130

6.2.3 NULL流和并發中斷 131

6.3 CUDA事件:CPU/GPU同步 133

6.3.1 阻塞事件 135

6.3.2 查詢 135

6.4 CUDA事件:計時 135

6.5 并發復制和內核處理 136

6.5.1 concurrencyMemcpyKernel.cu 137

6.5.2 性能結果 141

6.5.3 中斷引擎間的并發性 142

6.6 映射鎖頁內存 143

6.7 并發內核處理 145

6.8 GPU/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 線程塊與線程ID 156

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章 多GPU 203

9.1 概述 203

9.2 點對點機制 204

9.2.1 點對點內存復制 204

9.2.2 點對點尋址 205

9.3 UVA:從地址推斷設備 206

9.4 多GPU間同步 207

9.5 單線程多GPU方案 208

9.5.1 當前上下文棧 208

9.5.2 N-體問題 210

9.6 多線程多GPU方案 212

第10章 紋理操作 216

10.1 簡介 216

10.2 紋理內存 217

10.2.1 設備內存 217

10.2.2 CUDA數組與塊的線性尋址 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.2 CUDA運行時 249

 10.13.3 驅動API 250

第三部分 實例

第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.4 CUDA實現 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.7 CPU的優化 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

附錄A CUDA專家手冊庫 340

術語表 347
序: