《CUDA並行程序設計:GPU編程指南》


《CUDA並行程序設計:GPU編程指南》

基本信息

原書名:CUDA Programming:A Developer’s Guide to Parallel Computing with GPUs

作者: (美)Shane Cook   

譯者: 蘇統華 李東 李松澤 魏通

叢書名: 高性能計算系列叢書

出版社:機械工業出版社

ISBN:9787111448617

上架時間:2014-1-10

出版日期:2014 年1月

開本:16開

頁碼:1

版次:1-1

所屬分類:計算機

 

更多關於》》》 《CUDA並行程序設計:GPU編程指南》

 

內容簡介

    書籍

    計算機書籍

  《cuda並行程序設計:gpu編程指南》是cuda並行程序設計領域最全面、最詳實和最具權威性的著作之一,由cuda開發者社區技術總監親自撰寫,英偉達中國首批cuda官方認證工程師翻譯,詳實地講解了cuda並行程序設計的技術知識點(平台、架構、硬件知識、開發工具和熱點技術)和編程方法,包含大量實用代碼示例,實踐性非常強。

  全書共分為12章。第1章從宏觀上介紹流處理器演變歷史。第2章詳解gpu並行機制,深入理解串行與並行程序,以辯證地求解問題。第3章講解cuda設備及相關的硬件和體系結構,以實現最優cuda程序性能。第4章介紹cuda開發環境搭建和可用調試環境。第5章介紹與cuda編程緊密相關的核心概念——網格、線程塊與線程,並通過示例說明線程模型與性能的關系。第6章借助實例詳細講解了不同類型內存的工作機制,並指出實踐中容易出現的誤區。第7章細述多任務的cpu和gpu協同,並介紹多個cpu/gpu編程秘技。第8章介紹如何在應用程序中編寫和使用多gpu。第9章詳述cuda編程性能限制因素、分析cuda代碼的工具和技術。第10章介紹編程實踐中的庫與軟件開發工具包。第11章講解如何設計基於gpu的系統。第12章總結cuda應用中易犯錯誤以及應對建議。

 

目錄

《cuda並行程序設計:gpu編程指南》

致中國讀者

譯者序

前 言

第1章 超級計算簡史 1

1.1 簡介 1

1.2 馮·諾依曼計算機架構 2

1.3 克雷 4

1.4 連接機 5

1.5 cell處理器 6

1.6 多點計算 8

1.7 早期的gpgpu編程 10

1.8 單核解決方案的消亡 11

1.9 英偉達和cuda 12

1.10 gpu硬件 13

1.11 cuda的替代選擇 15

1.11.1 opencl 15

1.11.2 directcompute 16

1.11.3 cpu的替代選擇 16

1.11.4 編譯指令和庫 17

1.12 本章小結 18

第2章 使用gpu理解並行計算 19

2.1 簡介 19

2.2 傳統的串行代碼 19

2.3 串行/並行問題 21

2.4 並發性 22

2.5 並行處理的類型 25

2.5.1 基於任務的並行處理 25

2.5.2 基於數據的並行處理 27

2.6 弗林分類法 29

2.7 常用的並行模式 30

2.7.1 基於循環的模式 30

2.7.2 派生/匯集模式 31

2.7.3 分條/分塊 33

2.7.4 分而治之 34

2.8 本章小結 34

第3章 cuda硬件概述 35

3.1 pc架構 35

3.2 gpu硬件結構 39

3.3 cpu與gpu 41

3.4 gpu計算能力 42

3.4.1 計算能力1.0 42

3.4.2 計算能力1.1 43

3.4.3 計算能力1.2 44

3.4.4 計算能力1.3 44

3.4.5 計算能力2.0 44

3.4.6 計算能力2.1 46

第4章 cuda環境搭建 48

4.1 簡介 48

4.2 在windows下安裝軟件開發工具包 48

4.3 visual studio 49

4.3.1 工程 49

4.3.2 64位用戶 49

4.3.3 創建工程 51

4.4 linux 52

4.5 mac 55

4.6 安裝調試器 56

4.7 編譯模型 58

4.8 錯誤處理 59

4.9 本章小結 60

第5章 線程網格、線程塊以及線程 61

5.1 簡介 61

5.2 線程 61

5.2.1 問題分解 62

5.2.2 cpu與gpu的不同 63

5.2.3 任務執行模式 64

5.2.4 gpu線程 64

5.2.5 硬件初窺 66

5.2.6 cuda內核 69

5.3 線程塊 70

5.4 線程網格 74

5.4.1 跨幅與偏移 76

5.4.2 x與y方向的線程索引 77

5.5 線程束 83

5.5.1 分支 83

5.5.2 gpu的利用率 85

5.6 線程塊的調度 88

5.7 一個實例——統計直方圖 89

5.8 本章小結 96

第6章 cuda內存處理 99

6.1 簡介 99

6.2 高速緩存 100

6.3 寄存器的用法 103

6.4 共享內存 112

6.4.1 使用共享內存排序 113

6.4.2 基數排序 117

6.4.3 合並列表 123

6.4.4 並行合並 128

6.4.5 並行歸約 131

6.4.6 混合算法 134

6.4.7 不同gpu上的共享內存 138

6.4.8 共享內存小結 139

6.5 常量內存 140

6.5.1 常量內存高速緩存 140

6.5.2 常量內存廣播機制 142

6.5.3 運行時進行常量內存更新 152

6.6 全局內存 157

6.6.1 記分牌 165

6.6.2 全局內存排序 165

6.6.3 樣本排序 168

6.7 紋理內存 188

6.7.1 紋理緩存 188

6.7.2 基於硬件的內存獲取操作 189

6.7.3 使用紋理的限制 190

6.8 本章小結 190

第7章 cuda實踐之道 191

7.1 簡介 191

7.2 串行編碼與並行編碼 191

7.2.1 cpu與gpu的設計目標 191

7.2.2 cpu與gpu上的最佳算法對比 194

7.3 數據集處理 197

7.4 性能分析 206

7.5 一個使用aes的示例 218

7.5.1 算法 219

7.5.2 aes的串行實現 223

7.5.3 初始內核函數 224

7.5.4 內核函數性能 229

7.5.5 傳輸性能 233

7.5.6 單個執行流版本 234

7.5.7 如何與cpu比較 235

7.5.8 考慮在其他gpu上運行 244

7.5.9 使用多個流 248

7.5.10 aes總結 249

7.6 本章小結 249

第8章 多cpu和多gpu解決方案 252

8.1 簡介 252

8.2 局部性 252

8.3 多cpu系統 252

8.4 多gpu系統 253

8.5 多gpu算法 254

8.6 按需選用gpu 255

8.7 單節點系統 258

8.8 流 259

8.9 多節點系統 273

8.10 本章小結 284

第9章 應用程序性能優化 286

9.1 策略1:並行/串行在gpu/cpu上的問題分解 286

9.1.1 分析問題 286

9.1.2 時間 286

9.1.3 問題分解 288

9.1.4 依賴性 289

9.1.5 數據集大小 292

9.1.6 分辨率 293

9.1.7 識別瓶頸 294

9.1.8 cpu和gpu的任務分組 297

9.1.9 本節小結 299

9.2 策略2:內存因素 299

9.2.1 內存帶寬 299

9.2.2 限制的來源 300

9.2.3 內存組織 302

9.2.4 內存訪問以計算比率 303

9.2.5 循環融合和內核融合 308

9.2.6 共享內存和高速緩存的使用 309

9.2.7 本節小結 311

9.3 策略3:傳輸 311

9.3.1 鎖頁內存 311

9.3.2 零復制內存 315

9.3.3 帶寬限制 322

9.3.4 gpu計時 327

9.3.5 重疊gpu傳輸 330

9.3.6 本節小結 334

9.4 策略4:線程使用、計算和分支 335

9.4.1 線程內存模式 335

9.4.2 非活動線程 337

9.4.3 算術運算密度 338

9.4.4 一些常見的編譯器優化 342

9.4.5 分支 347

9.4.6 理解底層匯編代碼 351

9.4.7 寄存器的使用 355

9.4.8 本節小結 357

9.5 策略5:算法 357

9.5.1 排序 358

9.5.2 歸約 363

9.5.3 本節小結 384

9.6 策略6:資源競爭 384

9.6.1 識別瓶頸 384

9.6.2 解析瓶頸 396

9.6.3 本節小結 403

9.7 策略7:自調優應用程序 403

9.7.1 識別硬件 404

9.7.2 設備的利用 405

9.7.3 性能采樣 407

9.7.4 本節小結 407

9.8 本章小結 408

第10章 函數庫和sdk 410

10.1 簡介 410

10.2 函數庫 410

10.2.1 函數庫通用規范 411

10.2.2 npp 411

10.2.3 thrust 419

10.2.4 curand 434

10.2.5 cublas庫 438

10.3 cuda運算sdk 442

10.3.1 設備查詢 443

10.3.2 帶寬測試 445

10.3.3 simplep2p 446

10.3.4 asyncapi和cudaopenmp 448

10.3.5 對齊類型 455

10.4 基於指令的編程 457

10.5 編寫自己的內核 464

10.6 本章小結 466

第11章 規划gpu硬件系統 467

11.1 簡介 467

11.2 cpu處理器 469

11.3 gpu設備 470

11.3.1 大容量內存的支持 471

11.3.2 ecc內存的支持 471

11.3.3 tesla計算集群驅動程序 471

11.3.4 更高雙精度數學運算 472

11.3.5 大內存總線帶寬 472

11.3.6 系統管理中斷 472

11.3.7 狀態指示燈 472

11.4 pci-e總線 472

11.5 geforce板卡 473

11.6 cpu內存 474

11.7 風冷 475

11.8 液冷 477

11.9 機箱與主板 479

11.10 大容量存儲 481

11.10.1 主板上的輸入/輸出接口 481

11.10.2 專用raid控制器 481

11.10.3 hdsl 483

11.10.4 大容量存儲需求 483

11.10.5 聯網 483

11.11 電源選擇 484

11.12 操作系統 487

11.12.1 windows 487

11.12.2 linux 488

11.13 本章小結 488

第12章 常見問題、原因及解決方案 489

12.1 簡介 489

12.2 cuda指令錯誤 489

12.2.1 cuda錯誤處理 489

12.2.2 內核啟動和邊界檢查 490

12.2.3 無效的設備操作 491

12.2.4 volatile限定符 492

12.2.5 計算能力依賴函數 494

12.2.6 設備函數、全局函數和主機函數 495

12.2.7 內核中的流 496

12.3 並行編程問題 497

12.3.1 競爭冒險 497

12.3.2 同步 498

12.3.3 原子操作 502

12.4 算法問題 504

12.4.1 對比測試 504

12.4.2 內存泄漏 506

12.4.3 耗時的內核程序 506

12.5 查找並避免錯誤 507

12.5.1 你的gpu程序有多少錯誤 507

12.5.2 分而治之 508

12.5.3 斷言和防御型編程 509

12.5.4 調試級別和打印 511

12.5.5 版本控制 514

12.6 為未來的gpu進行開發 515

12.6.1 開普勒架構 515

12.6.2 思考 518

12.7 后續學習資源 519

12.7.1 介紹 519

12.7.2 在線課程 519

12.7.3 教學課程 520

12.7.4 書籍 521

12.7.5 英偉達cuda資格認證 521

12.8 本章小結 522

 

 

本圖書信息來源:互動出版網

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM