OpenACC高性能并行編程:概念與策略( 簡體 字) | |
作者:[美] 蘇妮塔·錢德拉塞克蘭(Sunita Chandrasekaran) [德]吉 | 類別:1. -> 程式設計 -> 綜合 |
出版社:機械工業出版社 | 3dWoo書號: 51019 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:4/22/2019 | |
頁數:244 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111623236 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
贊譽
推薦序 譯者序 前言 致謝 貢獻者簡介 譯者簡介 第1章 OpenACC概述 1 1.1 OpenACC語法 2 1.1.1 導語 3 1.1.2 子語 3 1.1.3 API例程與環境變量 4 1.2 計算構件 4 1.2.1 kernels 5 1.2.2 parallel 6 1.2.3 loop 7 1.2.4 routine 7 1.3 數據環境 9 1.3.1 數據導語 9 1.3.2 數據子語 10 1.3.3 cache導語 11 1.3.4 部分數據傳輸 11 1.4 總結 12 1.5 練習 12 第2章 循環級并行性 14 2.1 kernels循環與parallel循環的比較 15 2.2 并行性的三個級別 18 2.2.1 gang、worker與vector子語 18 2.2.2 將并行性映射到硬件 19 2.3 其他loop構件 20 2.3.1 循環折疊 20 2.3.2 independent子語 21 2.3.3 seq與auto子語 22 2.3.4 reduction子語 23 2.4 總結 25 2.5 練習 26 第3章 OpenACC編程工具 27 3.1 架構的通用特性 27 3.2 編譯OpenACC代碼 28 3.3 OpenACC應用程序的性能分析 30 3.3.1 性能分析層次和術語 30 3.3.2 性能數據獲取 31 3.3.3 性能數據記錄和顯示 32 3.3.4 OpenACC性能分析接口 32 3.3.5 支持OpenACC的性能工具 33 3.3.6 NVIDIA性能分析工具 34 3.3.7 針對混合應用程序的Score-P工具基礎架構 35 3.3.8 TAU性能系統 40 3.4 識別OpenACC程序中的bug 42 3.5 總結 44 3.6 練習 45 第4章 使用OpenACC編寫第一個程序 48 4.1 案例研究 48 4.1.1 串行代碼 49 4.1.2 編譯代碼 55 4.2 創建一個原生的并行版本 56 4.2.1 找到熱點 56 4.2.2 使用kernels安全嗎 56 4.2.3 OpenACC實現 56 4.3 OpenACC程序的性能 59 4.4 優化的并行版本 60 4.4.1 減少數據移動 61 4.4.2 特別聰明的小改動 62 4.4.3 最終的結果 63 4.5 總結 65 4.6 練習 66 第5章 編譯OpenACC 67 5.1 并行性的挑戰 68 5.1.1 并行硬件 68 5.1.2 映射循環 69 5.1.3 內存層次結構 71 5.1.4 歸約 72 5.1.5 應對并行性的OpenACC 72 5.2 重建編譯器 73 5.2.1 編譯器可以做什么 74 5.2.2 編譯器不能做什么 75 5.3 編譯OpenACC 76 5.3.1 代碼預備工作 77 5.3.2 調度 77 5.3.3 串行代碼 78 5.3.4 用戶錯誤 79 5.4 總結 80 5.5 練習 81 第6章 最佳編程實踐 83 6.1 通用準則 84 6.1.1 最大化設備計算 84 6.1.2 優化數據局部性 85 6.2 最大化設備計算 86 6.2.1 原子操作 86 6.2.2 kernels構件與parallel構件 87 6.2.3 運行時調優和if子語 88 6.3 優化數據局部性 89 6.3.1 最少化數據傳輸 89 6.3.2 數據復用和present子語 90 6.3.3 非結構化數據生命周期 91 6.3.4 指定數組形狀 92 6.4 典型示例 92 6.4.1 背景知識:熱力學報表 92 6.4.2 基線CPU版本的實現 93 6.4.3 性能分析 93 6.4.4 使用OpenACC進行加速 94 6.4.5 優化數據局部性 96 6.4.6 性能研究 97 6.5 總結 98 6.6 練習 98 第7章 OpenACC與性能可移植性 99 7.1 挑戰 99 7.2 目標架構 100 7.2.1 特定平臺的編譯 101 7.2.2 x86_64多核與NVIDIA 101 7.3 OpenACC性能可移植性 101 7.3.1 OpenACC內存模型 102 7.3.2 內存架構 102 7.3.3 代碼生成 102 7.3.4 性能可移植性的數據布局 103 7.4 代碼重構以實現性能可移植性 103 7.4.1 HACCmk 103 7.4.2 面向多種架構 105 7.4.3 openACC在NVIDIA K20x GPU上的應用 106 7.4.4 openACC在AMD Bulldozer多核上的應用 107 7.5 總結 108 7.6 練習 109 第8章 并行編程的其他方式 111 8.1 編程模型 111 8.1.1 OpenACC 113 8.1.2 OpenMP 113 8.1.3 CUDA 114 8.1.4 OpenCL 114 8.1.5 C++ AMP 115 8.1.6 Kokkos 115 8.1.7 RAJA 116 8.1.8 線程構建模塊 116 8.1.9 C++17 116 8.1.10 Fortran 2008 117 8.2 編程模型組件 117 8.2.1 并行循環 118 8.2.2 并行歸約 119 8.2.3 緊密嵌套循環 121 8.2.4 分層并行性(非緊密嵌套循環) 122 8.2.5 任務并行性 124 8.2.6 數據分配 125 8.2.7 數據傳輸 126 8.3 案例研究 127 8.3.1 串行實現 128 8.3.2 OpenACC實現 129 8.3.3 OpenMP實現 130 8.3.4 CUDA實現 131 8.3.5 Kokkos實現 134 8.3.6 TBB實現 136 8.3.7 一些性能數字 138 8.4 總結 140 8.5 練習 140 第9章 OpenACC與互操作性 142 9.1 在OpenACC中調用原生設備代碼 142 9.1.1 示例:使用DFT進行圖像濾波 143 9.1.2 host_data導語及use_device子語 145 9.1.3 目標平臺相關API例程 147 9.2 在原生設備代碼中調用OpenACC 149 9.3 OpenACC互操作性高級話題 149 9.3.1 acc_map_data 149 9.3.2 在OpenACC kernel中調用CUDA設備例程 151 9.4 總結 152 9.5 練習 152 第10章 OpenACC高級特性 153 10.1 異步操作 153 10.1.1 OpenACC異步編程 155 10.1.2 軟件流水線 160 10.2 多設備編程 168 10.2.1 多設備流水線 169 10.2.2 OpenACC與MPI 172 10.3 總結 176 10.4 練習 176 第11章 使用OpenACC的創新研究思路,第1部分 177 11.1 神威OpenACC 177 11.1.1 SW26010眾核處理器 178 11.1.2 神威太湖之光中的內存模型 178 11.1.3 執行模型 180 11.1.4 數據管理 181 11.1.5 總結 183 11.2 針對加速器的嵌套循環編譯器轉換 184 11.2.1 OpenUH編譯器基礎架構 185 11.2.2 循環調度轉換 187 11.2.3 循環調度的性能評估 190 11.2.4 OpenUH的其他研究課題 193 第12章 使用OpenACC的創新研究思路,第2部分 194 12.1 一個基于導語的高性能可重構計算框架 194 12.1.1 介紹 195 12.1.2 OpenACC到FPGA的基線翻譯 196 12.1.3 用于高效FPGA編程的OpenACC擴展和優化 198 12.1.4 評估 203 12.1.5 總結 207 12.2 使用XcalableACC編程加速集群 207 12.2.1 XcalableMP介紹 208 12.2.2 XcalableACC:當XcalableMP遇上OpenACC 211 12.2.3 Omni編譯器的實現 213 12.2.4 在HA-PACS上的性能評估 215 12.2.5 總結 220 本書是介紹大規模并行編程OpenACC的綜合實踐性書籍之一。書中前3章介紹了OpenACC背后的概念和OpenACC開發工具;第4章至第7章帶你了解第1個真實世界的OpenACC程序,并揭示OpenACC程序編譯背后的魔力,從而引入更多概念;第8章至第10章涵蓋高級主題,例如OpenACC的替代方案、底層設備交互、多設備編程和任務并行性;第11章和第12章探討了OpenACC實現潛在新語言特性的各種研究領域。
|