并行程序設計(概念與實踐)( 簡體 字) | |
作者:(德)貝蒂爾·施密特//(西)豪爾赫·岡薩雷斯-多明格斯//(德)克里斯蒂安·洪特//莫里茨·施拉布| | 類別:1. -> 程式設計 -> 綜合 |
譯者:張常有//吳長茂//解慶春 | |
出版社:機械工業 | 3dWoo書號: 53048 詢問書籍請說出此書號! 有庫存 NT售價: 595 元 |
出版日:6/1/2020 | |
頁數:357 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111656661 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
譯者序
前言 致謝 第1章 緒論 1 1.1 一個有趣的例子及其分析 2 1.2 并行計算基礎 10 1.2.1 分布式內存系統 10 1.2.2 共享內存系統 11 1.2.3 并行程序設計需考慮的因素 13 1.3 HPC動態和排名 15 1.4 附加練習 17 第2章 理論背景 19 2.1 PRAM 20 2.1.1 PRAM變體 21 2.1.2 PRAM上的并行前綴計算 22 2.1.3 PRAM上稀疏數組的壓縮算法 24 2.2 網絡拓撲 25 2.3 Amdahl定律和Gustafson定律 29 2.4 Foster的并行算法設計方法學 34 2.5 附加練習 37 參考文獻 40 第3章 現代體系結構 41 3.1 存儲層次 42 3.1.1 馮·諾依曼瓶頸 42 3.1.2 高速緩沖存儲器 43 3.1.3 緩存算法 44 3.1.4 優化緩存訪問 45 3.1.5 高速緩存一致性 48 3.1.6 虛假共享 50 3.1.7 并發多線程技術和預取技術 50 3.1.8 展望 51 3.2 并行性的層次 51 3.2.1 Flynn分類法 51 3.2.2 SIMD概念 53 3.2.3 通用微處理器上的向量化 54 3.2.4 結構體數組和數組結構體 57 3.2.5 展望 63 3.3 附加練習 63 參考文獻 67 第4章 C++多線程編程 68 4.1 多線程編程簡介 69 4.1.1 多線程編程和多進程編程的區別 69 4.1.2 派生和并入線程 69 4.1.3 我們的**個多線程程序 71 4.2 處理返回值 73 4.2.1 傳統方法 74 4.2.2 使用promise和future的現代方法 75 4.2.3 異步方式 80 4.3 基于靜態分發的調度機制 82 4.3.1 串行程序 83 4.3.2 線程的區塊分發 87 4.3.3 線程的循環分發 90 4.3.4 虛假共享 91 4.3.5 線程的塊循環分發 93 4.4 處理負載不平衡 95 4.4.1 靜態調度 99 4.4.2 動態塊循環分發 101 4.5 用條件變量通知線程 104 4.5.1 為一個睡覺的學生建模 105 4.5.2 使用條件變量 107 4.5.3 使用future和promise單發同步 108 4.6 隱式可數集合上的并行化 110 4.6.1 隱式可數集合 111 4.6.2 線程池用例 112 4.6.3 一個簡單線程池的實現 114 4.7 附加練習 119 參考文獻 121 第5章 **C++11多線程編程 122 5.1 無鎖編程 122 5.1.1 原子計數 123 5.1.2 非基本原子數據類型 124 5.1.3 利用比較交換以原子方式并行化*大值歸約 126 5.1.4 任意原子操作 129 5.1.5 ABA問題 132 5.2 工作共享線程池 133 5.2.1 工作共享線程池的用例 133 5.2.2 工作共享的實現 135 5.3 并行圖搜索 137 5.3.1 二元背包問題 138 5.3.2 串行實現 139 5.3.3 并行實現 144 5.4 展望 146 5.5 附加練習 148 參考文獻 149 第6章 OpenMP 150 6.1 OpenMP簡介 151 6.1.1 OpenMP簡史 151 6.1.2 基礎 151 6.2 parallel for制導語句 153 6.2.1 向量加法 154 6.2.2 變量共享和私有化 157 6.2.3 矩陣向量乘法 160 6.3 基本的并行歸約 162 6.3.1 *近鄰分類 162 6.3.2 手寫數字數據集MNIST 163 6.3.3 **配對距離計算的理論視角 164 6.3.4 **配對計算的實現 165 6.3.5 并行標簽預測 168 6.3.6 性能評測 169 6.4 不平衡循環調度 171 6.4.1 對稱性引起的負載失衡 172 6.4.2 內積計算實現 173 6.4.3 性能評測 174 6.5 **歸約 175 6.5.1 MNIST數據集上的SOFTMAX回歸分類器 175 6.5.2 定制歸約操作符 183 6.5.3 OpenMP**歸約 187 6.6 任務并行 189 6.6.1 樹遍歷 190 6.6.2 循環中生成任務 193 6.7 SIMD向量化 193 6.7.1 數據依賴 195 6.7.2 向量化感知函數 196 6.8 展望 196 6.9 附加練習 197 參考文獻 202 第7章 統一計算設備架構 203 7.1 CUDA簡介 204 7.2 支持CUDA的GPU硬件架構 206 7.2.1 主機與設備之間的互連 206 7.2.2 顯存和峰值寬度 207 7.2.3 計算資源的組織 207 7.3 內存訪問模式 211 7.3.1 均值名人臉的計算 212 7.3.2 計算中心化的數據矩陣 218 7.3.3 計算協方差矩陣 221 7.3.4 計算特征臉 229 7.4 內存層次結構 232 7.4.1 問題簡介 233 7.4.2 串行DTW的線性內存算法 237 7.4.3 線性內存DTW的一個初始CUDA移植 243 7.4.4 共享內存中的波前松弛 248 7.4.5 并發調度和bank沖突 253 7.4.6 紋理內存和常量內存 254 7.5 優化準則 257 7.6 附加練習 258 參考文獻 259 第8章 **CUDA編程 261 8.1 warp內聯函數和原子操作 261 8.1.1 分段并行歸約 262 8.1.2 全局并行歸約 265 8.1.3 任意原子操作 267 8.1.4 展望 269 8.2 利用多塊GPU和流 269 8.2.1 牛頓迭代 269 8.2.2 利用多塊GPU 272 8.2.3 通信和計算交叉 274 8.2.4 多塊GPU上的流式計算 278 8.3 展望 280 8.3.1 統一內存 280 8.3.2 動態并行性 281 8.3.3 協作組 281 8.3.4 張量核心 281 8.3.5 GPU集群上的分布式計算 282 8.4 附加練習 282 參考文獻 284 第9章 MPI 286 9.1 MPI簡介 286 9.2 基本概念 288 9.3 點到點通信 289 9.4 非阻塞通信 292 9.5 集合通信 295 9.6 計算通信重疊 300 9.7 派生數據類型 309 9.8 復雜通信域 315 9.9 展望 322 9.10 附加練習 322 參考文獻 327 **0章 統一并行C++ 329 10.1 PGAS和UPC++簡介 329 10.2 基本概念 331 10.3 內存親和性和私有化 332 10.4 全局指針和集合函數 337 10.5 鎖 343 10.6 遠程函數調用 348 10.7 附加練習 355 參考文獻 357 本書由德國約翰內斯·古騰堡大學并行和分布式架構團隊撰寫,對并行編程的高級主題進行了深入討論,除了涵蓋基礎概念外,還講授了共享內存和分布式內存體系結構的實用編程技巧。作者提供了一套進行自動代碼評估的開源系統,可方便地訪問并行計算資源,這也使得本書特別適合于課堂教學。
|