多核與 GPU 編程:工具、方法及實踐 多核与GPU编程:工具、方法及实践
傑拉西莫斯·巴拉斯 (Gerassimos Barlas)
- 出版商: 機械工業
- 出版日期: 2017-02-01
- 定價: $774
- 售價: 8.5 折 $658
- 語言: 簡體中文
- 頁數: 536
- 裝訂: 平裝
- ISBN: 7111557689
- ISBN-13: 9787111557685
已絕版
買這商品的人也買了...
-
$534$507 -
$301大型網站技術架構 -- 核心原理與案例分析
-
$1,150$1,150 -
$505CUDA 並行程序設計 : GPU 編程指南 (CUDA Programming: A Developer's Guide to Parallel Computing with GPUs)
-
$301並行編程方法與優化實踐
-
$454Linux 設備驅動開發詳解 : 基於最新的 Linux4.0 內核
-
$403OpenCL 異構平行計算:原理、機制與優化實踐
-
$301OpenCL 異構並行程式設計實戰
-
$301推薦系統 (Recommender Systems: An Introduction)
-
$709推薦系統(技術評估及高效演算法)
-
$580$493 -
$352OpenACC 並行編程實戰
-
$580$458 -
$403TensorFlow 實戰
-
$403Tensorflow:實戰Google深度學習框架
-
$505深入分析 GCC
-
$403CUDA 高性能並行計算
-
$480$408 -
$680$537 -
$520$406 -
$590$460 -
$505CUDA C 編程權威指南 (Professional CUDA C Programming)
-
$403深度學習與計算機視覺 : 算法原理、框架應用與代碼實現 (Deep Learning & Computer Vision:Algorithms and Examples)
-
$403OpenACC並行程序設計:性能優化實踐指南
-
$913基於 CUDA 的 GPU 並行程序開發指南 (GPU Parallel Program Development Using CUDA)
商品描述
本書從並行軟件的實現、調試、優化和剖析四個方面,詳細討論了當前主要的並行計算關鍵技術,主要內容包括:多核和並行程序設計、共享內存編程中的線程與OpenMP、分佈式內存編程、GPU編程、Thrust模板庫、負載均衡等。本書結合具體的代碼和案例分析,揭示瞭如何使用庫或者指令創建多核應用,如何使用MPI開發分佈式應用程序,如何使用CUDA開發高性能GPU程序,如何實現負載均衡,以及如何針對目標多核平臺進行程序剖析和調試等。本書可供從事高性能計算技術研究的專業人員參考,也可作為高校相關專業的教學用書。
作者簡介
Gerassimos Barlas 沙迦美國大學計算機科學與工程系教授。他的研究興趣包括並行算法、開發、分析,以及負載平衡的建模框架,分佈式視頻點播。Barlas教授講授並行編程課程已有12年時間,早在20世紀90年代,他就開始研究並行計算,並積極參與並行和分佈式系統可分負載理論這一新領域的研究工作。
目錄大綱
譯者序
前言
第1章概述1
1.1多核計算機時代1
1.2並行計算機的分類3
1.3現代計算機概覽4
1.3.1CellBE處理器5
1.3.2NVIDIA Kepler6
1.3.3AMD APU9
1.3.4從多核到眾核:Tilera TILE —Gx8072和Intel Xeon Phi10
1.4性能指標12
1.5並行程序性能的預測與測量16
1.5.1Amdahl定律18
1.5.2Gustafson—Barsis定律20
第2章多核和並行程序設計23
2.1引言23
2.2PCAM方法學24
2.3分解模式26
2.3.1任務並行27
2.3.2分而治之分解28
2.3.3幾何分解30
2.3.4遞歸數據分解32
2.3.5流水線分解35
2.3.6基於事件的合作分解39
2.4程序結構模式39
2.4.1單程序多數據40
2.4.2多程序多數據40
2.4.3主/從41
2.4.4map—reduce41
2.4.5fork/join42
2.4.6循環並行44
2.5匹配分解模式和程序結構模式44
第3章共享內存編程:線程46
3.1引言46
3.2線程48
3.2.1線程的定義48
3.2.2線程的作用49
3.2.3線程的生成和初始化49
3.2.4在線程間共享數據55
3.3設計考慮57
3.4信號量58
3.5經典問題中的信號量62
3.5.1生產者—消費者63
3.5.2終止處理66
3.5.3理髮師問題:引入公平性75
3.5. 4讀者—寫者問題80
3.6monitor84
3.6.1設計方法1:monitor內部的關鍵區87
3.6.2設計方法2:monitor控制關鍵區的入口87
3.7經典問題中的monitor91
3.7.1重新考慮生產者–消費者問題91
3.7.2重新考慮讀者–寫者問題95
3.8動態線程管理與靜態線程管理102
3.8.1Qt線程池102
3.8.2線程池的創建和管理103
3.9調試多線程應用111
3.10高層次結構:無須顯式利用線程的多線程編程115
3.10.1並發map116
3.10.2map—reduce118
3.10.3並發過濾120
3.10.4filter—reduce121
3.10.5案例研究:多線程存儲122
3.10.6案例研究:多線程圖像匹配131
第4章共享內存編程:OpenMP140
4.1引言140
4.2第一個OpenMP程序141
4.3變量作用域144
4.3.1定積分OpenMP版本V.0:人工劃分146
4.3.2定積分OpenMP版本V.1:無競爭條件的人工劃分147
4.3.3定積分OpenMP V.2:基於鎖的隱式劃分148
4.3.4定積分OpenMP V .3:基於歸約的隱式劃分150
4.3.5變量作用域總結151
4.4循環級並行152
4.4.1數據依賴154
4.4.2嵌套循環162
4.4.3調度162
4.5任務並行166
4.5.1sections指令166
4.5.2task指令171
4.6同步結構177
4.7正確性與優化問題183
4.7.1線程安全183
4.7.2假共享187
4.8案例研究:OpenMP中的排序算法192
4.8.1自下而上歸併排序算法的OpenMP實現192
4.8.2自上而下歸併排序算法的OpenMP實現195
4.8.3性能評估200
第5章分佈式內存編程203
5.1通信進程203
5.2MPI204
5.3核心概念205
5.4你的第一個MPI程序206
5.5程序體系結構208
5.5.1SPMD208
5.5.2MPMD209
5.6點對點通信210
5.7可選的點對點通信模式214
5.8非阻塞通信216
5.9點對點通信小結220
5.10錯誤報告與處理220
5.11集合通信簡介222
5.11.1分發226
5.11.2收集231
5.11.3歸約233
5.11.4多對多收集237
5.11.5多對多分發240
5.11.6多對多歸約245
5.11.7全局同步245
5.12通信對象245
5.12.1派生數據類型246
5.12.2打包/解包253
5.13節點管理:通信器和組254
5.13.1創建組255
5.13.2建立內部通信器257
5.14單邊通信259
5.14.1RMA通信函數261
5.14.2RMA同步函數262
5.15I/O注意事項270
5.16MPI多進程和多線程混合編程276
5.17時序和性能測量279
5.18調試和分析MPI程序279
5.19Boost.MPI庫283
5.19.1阻塞和非阻塞通信285
5.19.2?數據序列化289
5.19.3?集合通信292
5.20案例研究:有限擴散聚合模型295
5.21案例研究:暴力加密破解300
5.21.1版本1:“基本型”MPI300
5.21.2版本2:MPI與OpenMP的結合305
5.22案例研究:主/從式並行模型的MPI實現308
5.22.1簡單主/從式設置309
5.22.2多線程主/從式設置316
第6章GPU編程333
6.1GPU編程簡介333
6.2CUDA編程模型:線程、線程塊、線程網格335
6.3CUDA執行模型:流多處理器和warp340
6.4CUDA程序編譯過程344
6.5構建CUDA項目347
6.6內存層次結構349
6.6.1本地內存/寄存器355
6.6.2共享內存356
6.6.3常量內存363
6.6.4texture和surface內存368
6.7優化技術369
6.7.1線程組織設計369
6.7.2kernel結構378
6.7.3共享內存訪問382
6.7.4全局內存訪問388
6.7.5page—locked與zero—copy內存392
6.7.6統一內存394
6.7.7異步執行和流397
6.8動態並行403
6.9CUDA程序的調試407
6.10CUDA程序剖析410
6.11CUDA和MPI412
6.12案例研究417
6.12.1分形集合計算417
6.12.2塊加密算法426
第7章Tlarust模板庫452
7.1引言452
7.2使用Thrust的第一步453
7.3Thrust數據類型456
7.4Thrust算法459
7.4.1變換算法460
7.4.2排序與查詢463
7.4.3歸約468
7.4.4scan /前綴和471
7.4.5數據管理與處理472
7.5花式迭代器475
7.6交換設備後端480
7.7案例研究481
7.7.1蒙特卡洛積分481
7.7.2DNA序列比對485
第8章負載均衡493
8.1引言493
8.2動態負載均衡:Linda的遺贈494
8.3靜態負載均衡:可分負載理論方法495
8.3.1建模開銷496
8.3.2通信設置502
8.3.3分析503
8.3.4總結:簡短的文獻綜述510
8.4DLTlib:分割工作負載的庫513
8.5案例研究516
8.5.1Mandelbrot集“電影”的混合計算:動態負載均衡案例研究516
8.5.2分佈式塊加密:靜態負載均衡案例研究526
在線資源
附錄A編譯Qt程序
附錄B運行MPI程序:準備與配置步驟
附錄C測量時間
附錄DBoost.MPI
附錄ECUDA環境搭建
附錄FDLTlib
術語表
參考文獻