OpenACC並行程序設計:性能優化實踐指南 OpenACC并行程序设计:性能优化实践指南

羅布·法伯 (Rob Farber)

  • 出版商: 機械工業
  • 出版日期: 2017-08-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 243
  • 裝訂: 平裝
  • ISBN: 7111576756
  • ISBN-13: 9787111576754

立即出貨

買這商品的人也買了...

商品描述

《OpenACC並行程序設計:性能優化實踐指南》由高性能技術專家Rob Farber領銜編著,24位來自世界各地的業界翹楚分享了他們的一線經驗。你不僅能夠從中學到Open ACC的基礎知識和編程技巧,還能夠通過多領域的應用案例快速掌握實戰方法。其中涉及PGI和Cray等編譯器的使用,以及在多核CPU和GPU等設備上的運行和性能分析。此外,《OpenACC並行程序設計:性能優化實踐指南》網站上還提供了大量實用代碼,涵蓋科學、商業、大數據和實時系統等熱門領域。

作者簡介

羅布·法伯(Rob Farber),資歷高性能編程專家,Irish高端計算中心、美國國家實驗室LosAlamos分部、Berkeley分部、西北太平洋分部科研專家,資歷高性能編程顧問,技術作家,任職於SantaFe學院,是《Fortune》排名前100名的兩家公司的合作創始人。
他還為多家優選《財富》500強企業提供諮詢服務。在《Dr.Dobb's Journal》、《Scientific Computing》等媒體上發表多篇關於高性能編程的文章,深受讀者喜愛。

目錄大綱

譯者序
序言
前言
致謝
作者簡介

第1章從串行編程到並行編程
1.1簡單的數據並行循環
1.1.1OpenACC內核構件與並行構件對比
1.1.2OpenACC並行的多種形式
1.1.3accFill_ex2運行時結果
1.2簡單的任務並行示例
1.3Amdahl定律及其擴展
1.3.1大O表示法和數據傳輸
1.3.2accTask.cpp代碼的擴展性
1.4並行執行和競爭條件
1.5無鎖編程
1.6控制並行資源
1.7讓生活更簡單
1.8參考文獻

第2章性能導向開發
2.1測試代碼:共軛梯度法
2.1.1代碼編譯
2.1.2初始測試
2.2描述並行度
2.2.1加速waxoDy 
2.2.2加速dot 
2.2.3加速matvec 
2.3描述數據移動
2.4優化循環
2.4.1縮短向量長度
2.4.2增加並行度
2.5在多核系統中並行運行
2.6小結

第3章使用Score—P和Vampir分析混合應用性能
3.1性能分析技術和術語
3.2逐步性能提升
3.3激光驅動電子束的粒子單元模擬
3.4通過代碼插裝準備性能測量
3.5在應用程序執行期間記錄性能信息
3.6第一個並行PIConGPU實現
3.7釋放主機進程
3.8優化GPU內核
3.9增加GPU任務並行
3.10使用Score—P和Vampir記錄OpenACC運行時事件
3.11小結
3.12參考文獻

第4章數據傳輸流水線化
4.1初識流水線
4.2示例代碼:曼德勃羅發生器
4.2.1分塊計算
4.2.2分塊數據拷貝
4.2.3異步執行
4.3在多種設備上實現流水線
4.4結論

第5章高級數據管理
5.1非結構化數據區域
5.2動態數據成員的聚合類型
5.3C++類數據管理
5.3.1創建通用列表容器類
5.3.2accList更新方法
5.4在例程中使用全局和模塊變量
5.5僅在設備端可用的數據
5.5.1映射設備端數據
5.5.2MPI進程間共享設備端數據
5.6示例代碼
5.7運行時結果
5.8小結

第6章循環執行調優
6.1loop構件
6.2基本loop優化子句
6.2.1auto子句
6.2.2independent子句
6.2.3seq子句
6.2.4reduction子句
6.2.5collapse子句
6.3高級loop優化子句
6.3.1gang、worker和vector子句
6.3 .2tile子句
6.4性能測試結果
6.5小結

第7章多設備編程
7.1簡介
7.2三種多設備編程方法
7.2.1處理設備相關性和選擇設備
7.2.2單線程多設備編程
7.2.3多線程多設備編程
7.2.4多進程多設備編程
7.3示例:2D泊松方程的雅可比求解器
7.4域分解
7.4.1單線程多設備編程
7.4.2多線程多設備編程
7.4.3多進程多設備編程
7.4. 4通信與計算重疊
7.5調試和分析
7.5.1使用cuda—memcheck和cuda—gdb調試
7.5.2使用nvprof和NVIDIAVisualProfiler分析
7.6小結
7.7參考文獻

第8章Stencil和Feldkamp算法移植
8.1簡介
8.2實驗環境
8.2.1Feldkamp—Davis—Kress算法
8.2.22D熱方程
8.3OpenMP/OpenACC混合編程
8.4小結
8.5參考文獻

第9章加速3D波方程
9.1簡介
9.2示例代碼:計算3D標量波方程
9.3棧變成堆
9.4測量主機基準擴展性
9.4.1創建OpenMP編譯環境
9.4.2編譯OpenMP代碼
9.4.3運行OpenMP代碼
9.5使用OpenACC工具
9.5.1添加OpenACC並行指令
9.5.2編譯OpenACC並行指令
9.5.3理解統一內存
9.5 .4使用統一內存
9.5.5運行統一內存
9.5.6使用可視化分析器分析統一內存
9.6使用OpenACC數據指令
9.6.1編譯OpenACC數據指令
9.6.2分析OpenACC數據指令
9.6.3運行OpenACC數據指令
9.7OpenACC多核系統
9.7.1編譯OpenACC多核
9.7.2在多核系統上運行OpenACC"'160 
9.8小結
9.9參考文獻

第10章應用程序開發詳解
10.1CloverLeaf簡介
10.1.1流體力學方案
10.1.2測試用例
10.2開發平台:CrayXK6 
10.3開發OpenACC版本CloverLeaf 
10.3.1熱點
10.3.2獨立內核加速
10.3.3多個內核加速
10.3.4GPU上實現完全駐留
10.3.5增加問題規模
10.3.6與混合MPI/OpenMP比較
10.3.7混合MPI/OpenACC 
10.3.8版本A:初始性能
10.3.9版本B:內循環依賴
10.3.10版本C:嵌套循環和全局變量
10.3.11版本D:多GPU,減少隱式傳輸
10.3.12版本E:OpenACC同步等待
10.3.13GPU優化對CPU的影響
10.3.14多GPU擴展
10.4結論
10.4.1CPU上的OpenACC實現
10.4.2異構計算
10.5小結
10.6擴展信息

第11章GPU加速分子動力學聚類分析
11.1簡介
11.2MD聚類分析概述
11.2.1聚類算法
11.2.2QCP快速計算成對RMSD 
11.2.3原子選擇和軌跡數據結構
11.2.4不相似矩陣計算
11.3硬件架構注意事項
11.4實現
11.4.1性能評估測試用例
11.4.2存儲器佈局優化
11.4.3QCP內積循環
11.4.4手寫向量化QCP內積循環
11.4.5代碼適配和使用OpenACC指令
11.5性能測試結果
11.6小結
11.7致謝
11.8參考文獻

第12章增量式加速RI—MP2電子結構理論的相關方法
12.1簡介
12.2原理
12.3實現
12.3.1GPU—1 
12.3.2GPU—2 
12.3.3GPU—3 
12.3.4GPU—4 
12.3.5GPU—5 
12.3.6GPU —6 
12.3.7GPU—7 
12.3.8GPU—8 
12.4結果
12.4.1計算細節
12.4.2問題規模擴展
12.4.3設備數量擴展
12.4.4總性能
12.5小結
12.6致謝
12.7參考文獻

第13章將大型傳統氣候和天氣建模代碼移植到GPU上
13.1簡介
13.2移植方法:步驟詳解
13.2.1簡化大氣模型
13.2.2步驟1:添加並行區域
13.2.3步驟2:管理數據傳輸
13.2.4步驟3:基本優化
13.2.5並行循環包含子例程調用
13.2.6CUDA接口
13.3性能優化
13.4輻射參數化的結果
13.5參考文獻