新到貨2本75折
C++ AMP:用Visual C++加速大規模並行計算

C++ AMP:用Visual C++加速大規模並行計算

  • 定價:414
  • 優惠價:87360
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

C++ AMP是Microsoft Visual Studio和C++編程語言的新擴展,用於幫助開發人員充分適應現在和未來的高度並行和異構計算環境。C++ AMP更易用,與C++配合得更好。

《C++ AMP:用Visual C++加速大規模並行計算》的目標是幫助C++開發人員在理解C++ AMP核心概念的基礎上,掌握更高級的功能。書中包含了C++ AMP程序開發的設計思路、使用方法、真實案例及代碼示例,並提供了案例的源代碼。

通過學習《C++ AMP:用Visual C++加速大規模並行計算》,讀者能理解如何在應用程序中最好地使用C++ AMP,還能利用Microsoft Visual Studio 2012提供的調試和剖析工具來解決問題、優化性能。
  
《C++ AMP:用Visual C++加速大規模並行計算》的兩位作者一位是有20多年C++實踐經驗的講師、演講人和作家,一位是微軟工作室的首席軟件架構師,他們有豐富的實踐經驗,因此,本書極具實際應用參考價值。

《C++ AMP:用Visual C++加速大規模並行計算》適合專業C++異構編程人員及熟悉C++並希望從事並行編程及異構編程的開發人員。
 

目錄

第1章 C++ AMP概述 1
1.1 為什麼選擇GPGPU?什麼是異構計算? 1
1.1.1 性能提升史 1
1.1.2 異構平台 2
1.1.3 GPU架構 3
1.1.4 通過並行性提升性能的候選方案 4
1.2 CPU並行技術 7
1.2.1 向量化 7
1.2.2 OpenMP 9
1.2.3 並發運行時庫(ConcRT)和並行模式庫 10
1.2.4 任務並行庫 11
1.2.5 WARP-Windows高級柵格化平台 11
1.2.6 GPU並行技術 12
1.2.7 成功並行化的要求 13
1.3 C++ AMP方法 14
1.3.1 C++ AMP將GPGPU(以及更多)帶進主流 14
1.3.2 C++ AMP是C++,而不是C 14
1.3.3 C++ AMP使用了我們熟識的工具 15
1.3.4 C++ AMP是一個近乎全面的代碼庫 15
1.3.5 C++ AMP可以生成可移植的、不會過時的執行代碼 17
1.4 小結 18

第2章 Nbody案例 19
2.1 運行示例前的准備工作 19
2.2 運行Nbody示例 20
2.3 示例的結構 24
2.4 CPU計算 25
2.4.1 數據結構 25
2.4.2 wWinMain函數 26
2.4.3 OnFrameMove回調函數 26
2.4.4 OnD3D11CreateDevice回調函數 27
2.4.5 OnGUIEvent回調函數 29
2.4.6 OnD3D11FrameRender回調函數 30
2.5 CPU NBody類 30
2.5.1 NBodySimpleInteractionEngine 30
2.5.2 NBodySimpleSingleCore 31
2.5.3 NBodySimpleMultiCore 31
2.5.4 NBodySimpleInteractionEngine::BodyBodyInteraction 32
2.6 C++ AMP計算 33
2.6.1 數據結構 33
2.6.2 CreateTasks 35
2.7 C++ AMP NBody類 37
2.7.1 NBodyAmpSimple::Integrate 37
2.7.2 BodyBodyInteraction 38
2.8 小結 40

第3章 C++ AMP基礎 41
3.1 arrayT, N 41
3.2 accelerator與accelerator_view 43
3.3 indexN 45
3.4 extentN 46
3.5 array_viewT,N 46
3.6 parallel_for_each 50
3.7 使用restrict(amp)標記的函數 52
3.8 在CPU和GPU之間復制數據 54
3.9 數學庫函數 56
3.10 小結 57

第4章 分組 58
4.1 使用分組的目的和好處 58
4.2 tile_static內存 60
4.3 tiled_extent 60
4.4 tiled_indexN1, N2, N3 62
4.5 將簡單算法改成分組算法 63
4.5.1 使用tile_static內存 64
4.5.2 分組柵和同步 68
4.5.3 完成簡單版本到分組版本的修改 70
4.6 分組大小的影響 71
4.7 選擇分組大小 74
4.8 小結 75

第5章 分組NBody案例 76
5.1 分組功能對NBody的提速有多大幫助 76
5.2 N體問題的分組算法 77
5.2.1 NBodyAmpTiled類 78
5.2.2 NBodyAmpTiled::Integrate 79
5.3 使用Concurrency Visualizer 83
5.4 選擇分組大小 88
5.5 小結 92

第6章 調試 93
6.1 第一步 93
6.1.1 選擇GPU調試還是CPU調試 94
6.1.2 參考加速器 97
6.2 GPU調試基礎 100
6.2.1 熟悉的窗口和技巧 100
6.2.2 Debug Location工具欄 101
6.2.3 檢測競態 101
6.3 檢查線程運行狀況 103
6.3.1 線程標記 104
6.3.2 GPU Threads窗口 105
6.3.3 Parallel Stacks窗口 107
6.3.4 Parallel Watch窗口 108
6.3.5 對線程置標記、分組和過濾 110
6.4 施加更多的控制 112
6.4.1 凍結與解凍線程 113
6.4.2 Run Tile to Cursor 114
6.5 小結 116

第7章 優化 117
7.1 一種性能優化方法 117
7.2 分析性能 118
7.2.1 測量內核性能 118
7.2.2 使用Concurrency Visualizer 121
7.2.3 使用Concurrency Visualizer SDK 126
7.3 優化內存訪問模式 127
7.3.1 別名和parallel_for_each調用 127
7.3.2 往返GPU的高效數據復制 131
7.3.3 高效加速器全局內存訪問 136
7.3.4 結構體數組與數組結構體 139
7.3.5 高效的分組靜態內存訪問 141
7.3.6 常量內存 145
7.3.7 紋理內存 146
7.3.8 占用比和寄存器 146
7.4 優化計算 147
7.4.1 避免分支代碼 147
7.4.2 選擇合適的精度 151
7.4.3 數學運算的成本估算 153
7.4.4 循環展開 153
7.4.5 障柵 154
7.4.6 排隊模式 157
7.5 小結 159

第8章 性能案例——歸約 160
8.1 問題 160
8.2 示例的結構 161
8.2.1 初始化和負載 164
8.2.2 Concurrency Visualizer標記 164
8.2.3 TimeFunc() 165
8.2.4 開銷 167
8.3 CPU算法 167
8.3.1 串行算法 167
8.3.2 並行算法 168
8.4 C++ AMP算法 168
8.4.1 簡單版本 169
8.4.2 使用array_view的簡單版本 171
8.4.3 簡單優化版本 172
8.4.4 原始分組版本 174
8.4.5 共享內存的分組版本 176
8.4.6 使分支數降至最低的版本 182
8.4.7 消除槽位沖突版本 182
8.4.8 減少停滯線程版本 184
8.4.9 循環展開版本 185
8.4.10 級聯歸約版本 188
8.4.11 帶循環展開的級聯歸約版本 190
8.5 小結 191

第9章 使用多個加速器工作 192
9.1 選擇加速器 192
9.2 使用一個以上的GPU 197
9.3 在加速器之間交換數據 201
9.4 動態負載均衡 206
9.5 交織並行性 209
9.6 回退到CPU執行 210
9.7 小結 211

第10章 Cartoonizer案例 213
10.1 前提條件 213
10.2 運行示例 214
10.3 示例的結構 217
10.4 流水線 218
10.4.1 數據結構 218
10.4.2 CartoonizerDlg::OnBnClickedButtonStart()方法 220
10.4.3 ImagePipeline類 221
10.5 流水線卡通化階段 225
10.5.1 ImageCartoonizerAgent類 225
10.5.2 IFrameProcessor實現 228
10.6 使用多個C++ AMP加速器工作 236
10.6.1 FrameProcessorAmpMulti類 236
10.6.2 復制流水線 239
10.6.3 ImageCartoonizerAgentParallel類 239
10.7 卡通器性能 242
10.8 小結 244

第11章 圖形互操作 245
11.1 基礎知識 245
11.1.1 norm與unorm 245
11.1.2 短向量類型 247
11.1.3 textureT, N 251
11.1.4 writeonly_texture_viewT, N 257
11.1.5 紋理與數組 258
11.2 使用紋理和短向量 259
11.3 HLSL內建函數 262
11.4 DirectX互操作 264
11.4.1 加速器視圖與Direct3D設備互操作 264
11.4.2 數組與Direct3D設備互操作 265
11.4.3 紋理與Direct3D紋理資源互操作 266
11.4.4 使用圖形互操作庫 269
11.5 小結 271

第12章 提示、技巧與最佳實踐 273
12.1 處理分組大小不匹配的問題 273
12.1.1 填充分組 275
12.1.2 截取分組 276
12.1.3 對比方法 280
12.2 初始化數組 280
12.3 函數對象與lambda函數 281
12.4 原子操作 282
12.5 Windows 8上其他的C++ AMP功能 285
12.6 超時檢測與恢復 286
12.6.1 避免TDR 287
12.6.2 在Windows 8上取消TDR 288
12.6.3 檢測TDR和從TDR中恢復 288
12.7 雙精度支持 290
12.7.1 有限雙精度支持 290
12.7.2 完整雙精度支持 290
12.8 在Windows 7上調試 291
12.8.1 配置遠程計算機 291
12.8.2 配置項目 291
12.8.3 部署和調試項目 292
12.9 其他調試函數 293
12.10 部署 294
12.10.1 部署應用程序 294
12.10.2 在服務器上運行C++ AMP 294
12.11 C++ AMP與Windows 8的Windows應用商店 296
12.12 在托管代碼中使用C++ AMP 296
12.12.1 從.NET應用程序、Windows 7 Windows應用商店或庫中調用 297
12.12.2 從C++ CLR應用程序中調用 297
12.12.3 從C++ CLR項目中調用 297
12.13 小結 298

附錄 其他資源 299
 

詳細資料

  • ISBN:9787115345035
  • 規格:300頁 / 普通級 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、飲食、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折