OpenACC并行程序設計:性能優化實踐指南( 簡體 字) | |
作者:[美]羅布·法伯(Rob Farber) | 類別:1. -> 程式設計 -> 綜合 |
出版社:機械工業出版社 | 3dWoo書號: 47436 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:8/10/2017 | |
頁數:264 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111576754 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
譯者序
序言 前言 致謝 作者簡介 第1章 從串行編程到并行編程1 1.1 簡單的數據并行循環1 1.1.1 OpenACC內核構件與并行構件對比4 1.1.2 OpenACC并行的多種形式6 1.1.3 accFill_ex2運行時結果7 1.2 簡單的任務并行示例8 1.3 Amdahl定律及其擴展9 1.3.1 大O表示法和數據傳輸11 1.3.2 accTask.cpp代碼的擴展性12 1.4 并行執行和競爭條件14 1.5 無鎖編程17 1.6 控制并行資源20 1.7 讓生活更簡單22 1.8 參考文獻23 第2章 性能導向開發24 2.1 測試代碼:共軛梯度法25 2.1.1 代碼編譯25 2.1.2 初始測試26 2.2 描述并行度28 2.2.1 加速waxpby28 2.2.2 加速dot31 2.2.3 加速matvec32 2.3 描述數據移動34 2.4 優化循環39 2.4.1 縮短向量長度40 2.4.2 增加并行度41 2.5 在多核系統中并行運行43 2.6 小結44 第3章 使用Score-P和Vampir分析混合應用性能46 3.1 性能分析技術和術語47 3.2 逐步性能提升48 3.3 激光驅動電子束的粒子單元模擬48 3.4 通過代碼插裝準備性能測量49 3.5 在應用程序執行期間記錄性能信息50 3.6 第一個并行PIConGPU實現51 3.7 釋放主機進程53 3.8 優化GPU內核53 3.9 增加GPU任務并行54 3.10 使用Score-P和Vampir記錄OpenACC運行時事件55 3.11 小結56 3.12 參考文獻56 第4章 數據傳輸流水線化58 4.1 初識流水線59 4.2 示例代碼:曼德勃羅發生器59 4.2.1 分塊計算62 4.2.2 分塊數據拷貝63 4.2.3 異步執行63 4.3 在多種設備上實現流水線65 4.4 結論69 第5章 高級數據管理70 5.1 非結構化數據區域71 5.2 動態數據成員的聚合類型73 5.3 C++類數據管理75 5.3.1 創建通用列表容器類77 5.3.2 accList更新方法79 5.4 在例程中使用全局和模塊變量80 5.5 僅在設備端可用的數據82 5.5.1 映射設備端數據83 5.5.2 MPI進程間共享設備端數據84 5.6 示例代碼86 5.7 運行時結果91 5.8 小結93 第6章 循環執行調優94 6.1 loop構件95 6.2 基本loop優化子句97 6.2.1 auto子句97 6.2.2 independent子句98 6.2.3 seq子句98 6.2.4 reduction子句99 6.2.5 collapse子句101 6.3 高級loop優化子句102 6.3.1 gang、worker和vector子句102 6.3.2 tile子句102 6.4 性能測試結果104 6.5 小結105 第7章 多設備編程106 7.1 簡介106 7.2 三種多設備編程方法107 7.2.1 處理設備相關性和選擇設備107 7.2.2 單線程多設備編程108 7.2.3 多線程多設備編程108 7.2.4 多進程多設備編程109 7.3 示例:2D泊松方程的雅可比求解器109 7.4 域分解111 7.4.1 單線程多設備編程111 7.4.2 多線程多設備編程114 7.4.3 多進程多設備編程116 7.4.4 通信與計算重疊120 7.5 調試和分析122 7.5.1 使用cuda-memcheck和cuda-gdb調試122 7.5.2 使用nvprof和NVIDIA Visual Profiler分析123 7.6 小結123 7.7 參考文獻124 第8章 Stencil和Feldkamp算法移植125 8.1 簡介125 8.2 實驗環境126 8.2.1 Feldkamp-Davis-Kress算法126 8.2.2 2D熱方程133 8.3 OpenMP/OpenACC混合編程138 8.4 小結141 8.5 參考文獻142 第9章 加速3D波方程143 9.1 簡介143 9.2 示例代碼:計算3D標量波方程144 9.3 棧變成堆146 9.4 測量主機基準擴展性148 9.4.1 創建OpenMP編譯環境148 9.4.2 編譯OpenMP代碼149 9.4.3 運行OpenMP代碼150 9.5 使用OpenACC工具150 9.5.1 添加OpenACC并行指令150 9.5.2 編譯OpenACC并行指令151 9.5.3 理解統一內存151 9.5.4 使用統一內存152 9.5.5 運行統一內存152 9.5.6 使用可視化分析器分析統一內存153 9.6 使用OpenACC數據指令155 9.6.1 編譯OpenACC數據指令156 9.6.2 分析OpenACC 數據指令156 9.6.3 運行OpenACC數據指令158 9.7 OpenACC多核系統158 9.7.1 編譯OpenACC多核159 9.7.2 在多核系統上運行OpenACC160 9.8 小結160 9.9 參考文獻161 第10章 應用程序開發詳解162 10.1 CloverLeaf簡介162 10.1.1 流體力學方案162 10.1.2 測試用例163 10.2 開發平臺:Cray XK6163 10.3 開發OpenACC版本CloverLeaf164 10.3.1 熱點164 10.3.2 獨立內核加速165 10.3.3 多個內核加速166 10.3.4 GPU上實現完全駐留167 10.3.5 增加問題規模167 10.3.6 與混合MPI/OpenMP比較169 10.3.7 混合MPI/OpenACC169 10.3.8 版本A:初始性能169 10.3.9 版本B:內循環依賴170 10.3.10 版本C:嵌套循環和全局變量173 10.3.11 版本D:多GPU,減少隱式傳輸174 10.3.12 版本E:OpenACC同步等待175 10.3.13 GPU優化對CPU的影響178 10.3.14 多GPU擴展179 10.4 結論180 10.4.1 CPU上的OpenACC實現180 10.4.2 異構計算182 10.5 小結183 10.6 擴展信息184 第11章 GPU加速分子動力學聚類分析185 11.1 簡介185 11.2 MD聚類分析概述186 11.2.1 聚類算法187 11.2.2 QCP快速計算成對RMSD188 11.2.3 原子選擇和軌跡數據結構189 11.2.4 不相似矩陣計算190 11.3 硬件架構注意事項191 11.4 實現192 11.4.1 性能評估測試用例192 11.4.2 存儲器布局優化192 11.4.3 QCP內積循環192 11.4.4 手寫向量化QCP內積循環194 11.4.5 代碼適配和使用OpenACC指令196 11.5 性能測試結果200 11.6 小結202 11.7 致謝203 11.8 參考文獻203 第12章 增量式加速RI-MP2電子結構理論的相關方法206 12.1 簡介206 12.2 原理208 12.3 實現209 12.3.1 GPU-1209 12.3.2 GPU-2210 12.3.3 GPU-3211 12.3.4 GPU-4212 12.3.5 GPU-5213 12.3.6 GPU-6214 12.3.7 GPU-7215 12.3.8 GPU-8216 12.4 結果217 12.4.1 計算細節217 12.4.2 問題規模擴展218 12.4.3 設備數量擴展219 12.4.4 總性能220 12.5 小結222 12.6 致謝223 12.7 參考文獻223 第13章 將大型傳統氣候和天氣建模代碼移植到GPU上226 13.1 簡介226 13.2 移植方法:步驟詳解228 13.2.1 簡化大氣模型228 13.2.2 步驟1:添加并行區域229 13.2.3 步驟2:管理數據傳輸231 13.2.4 步驟3:基本優化233 13.2.5 并行循環包含子例程調用235 13.2.6 CUDA接口237 13.3 性能優化239 13.4 輻射參數化的結果241 13.5 參考文獻243 本書由高性能技術專家RobFarber領銜編著,24位來自世界各地的業界翹楚分享了他們的一線經驗。你不僅能夠從中學到OpenACC的基礎知識和編程技巧,還能夠通過多領域的應用案例快速掌握實戰方法。其中涉及PGI和Cray等編譯器的使用,以及在多核CPU和GPU等設備上的運行和性能分析。此外,本書網站上還提供了大量實用代碼,涵蓋科學、商業、大數據和實時系統等熱門領域。
|