此實作坊涵蓋運用 OpenACC 來加速 C/C++ 或 Fortran 應用程式在大規模平行 GPU 上的執行時所需的基本工具和技術。您將學習如何編寫程式碼、使用 OpenACC 設定平行程式碼、最佳化 CPU 和 GPU 加速器之間的記憶體移轉,以及將所學的工作流程實作在新工作上,即運用加速功能完整但僅使用 CPU 的拉普拉斯熱導方程,來大幅提升效能。在實作坊結束時,您將可以使用其他資源,自行創造 GPU 加速的應用程式。

 

學習目標


參加本實作坊後,您將瞭解運用 OpenACC 以 GPU 加速 C/C++ 或 Fortran 應用程式的基本工具和技術,並能夠:
  • 分析並最佳化僅使用 CPU 的應用程式,找出用於加速的熱點。
  • 使用 OpenACC 指令使 GPU 加速您的程式碼基底。
  • 最佳化 CPU 與 GPU 加速器之間的資料轉移。

下載實作坊大綱與簡介 (PDF 80.3 KB)

實作坊大綱

簡介
(15 分鐘)
介紹平行程式設計
(50 分鐘)
瞭解平行運算的概念以及如何運用 OpenACC 表達。將涵蓋的主題如下:
  • 介紹平行運算
  • OpenACC 的目標
  • 使用 OpenACC 進行基本的程式碼平行運算
休息時間 (10 分鐘)
運用 OpenACC 進行分析
(50 分鐘)
瞭解如何建構和編譯 OpenACC 程式碼、分析的重要性以及如何使用 NVIDIA Nsight 系統分析器。將涵蓋的主題如下:
  • 編譯序列和 OpenACC 程式碼
  • 程式碼分析的重要性
  • 分析序列和 OpenACC 多核心程式碼
  • 介紹模組中使用的程式碼技術簡介
休息時間 (45 分鐘)
介紹 OpenACC 指令
(50 分鐘)
瞭解如何平行運算程式碼與 OpenACC 指令,並瞭解平行、核心和迴圈指令之間的差別。將涵蓋的主題如下:
  • 平行指令
  • 核心指令
  • 迴圈指令
休息時間 (10 分鐘)
運用 OpenACC 進行 GPU 程式設計
(50 分鐘)
瞭解 GPU 和多核心 CPU 之間的差異,並使用 CUDA 整合式記憶體管理記憶體。將涵蓋的主題如下:
  • GPU 的定義
  • 基本的 OpenACC 資料管理
  • CUDA 整合式記憶體
  • 分析 GPU 應用程式
休息時間 (15 分鐘)
運用 OpenACC 管理資料
(50 分鐘)
瞭解如何使用 OpenACC 資料指令來明確地管理資料轉移,藉以減少資料傳輸。將涵蓋的主題如下:
  • OpenACC 資料指令/子句
  • OpenACC 結構化資料區域
  • OpenACC 非結構化資料區域
  • OpenACC 更新指令
  • 具有 C/C++ 結構/類別的資料管理
休息時間 (10 分鐘)
運用 OpenACC 進行迴圈最佳化
(50 分鐘)
瞭解 GPU 上各種不同等級的平行運算,並學習如何透過最佳化程式碼中的迴圈,來擷取更多 OpenACC 的平行運算。將涵蓋的主題如下:
  • 序列/自動子句 (Seq/Auto clause)
  • 獨立子句 (Independent clause)
  • 折減子句 (Reduction clause)
  • 摺疊子句 (Collapse clause)
  • 佈局子句 (Tile clause)
  • Gang、Worker、Vector
休息時間 (10 分鐘)
最後回顧
(60 分鐘)
  • 回顧學習重點並回答問題。
  • 完成測驗並取得認證。
  • 填寫實作坊調查問卷。
後續步驟 使用這些 DLI 訓練繼續學習:
 

實作坊詳情

時間:8 小時

價格:如需瞭解價格,請聯絡我們

必備基礎能力:

  • 基礎 C/C++ 或 Fortran 專長能力,並熟悉變數類型、迴圈、條件陳述式、函數和陣列操作。
  • 我們預設學員未具備 GPU 程式設計的預備知識。

工具、函式庫和深度學習框架:NVIDIA® Nsight、OpenACC

測驗類型:

  • 程式編寫

認證證書:完成測驗後,參與者將會收到 NVIDIA DLI 認證證書,證明他們具有相關主題的能力,支援其專業職涯成長。

硬體需求:可運作最新版本 Chrome 或 Firefox 的桌上型電腦或筆記型電腦。每位參與者都能在雲端上使用專屬且全面設定完成的 GPU 加速工作站。

教材語言:英文

若貴組織希望為員工提升人工智慧、加速運算、加速資料科學等的關鍵開發技能,歡迎申請由講師帶領的 NVIDIA DLI 實作坊。

需要任何協助?