課程簡介

簡介

  • 什麼是OpenACC?
  • OpenACC與OpenCL、CUDA、SYCL的比較
  • OpenACC功能和架構概述
  • 搭建開發環境

入門

  • 在Visual Studio Code中創建OpenACC項目
  • 探索項目結構和文件
  • 編譯並運行程序
  • 使用printf和fprintf顯示輸出

OpenACC指令和子句

  • 理解OpenACC指令和子句
  • 使用parallel指令創建並行區域
  • 使用kernels指令實現編譯器管理的並行性
  • 使用loop指令並行化循環
  • 使用data指令管理數據移動
  • 使用update指令同步數據
  • 使用cache指令提高數據重用
  • 使用routine指令創建設備函數
  • 使用wait指令同步事件

OpenACC API

  • 理解OpenACC API的作用
  • 查詢設備信息和功能
  • 設置設備編號和類型
  • 處理錯誤和異常
  • 創建並同步事件

OpenACC庫與互操作性

  • 理解OpenACC庫與互操作性
  • 使用數學、隨機和複數庫
  • 與其他模型集成(CUDA、OpenMP、MPI)
  • 與GPU庫集成(cuBLAS、cuFFT)

OpenACC工具

  • 理解開發中的OpenACC工具
  • 對OpenACC程序進行性能分析和調試
  • 使用PGI編譯器、NVIDIA Nsight Systems、Allinea Forge進行性能分析

優化

  • 影響OpenACC程序性能的因素
  • 優化數據局部性並減少傳輸
  • 優化循環並行性和融合
  • 優化內核並行性和融合
  • 優化向量化和自動調優

總結與下一步

最低要求

  • 瞭解C/C++或Fortran語言以及並行編程概念
  • 具備計算機架構和內存層次結構的基礎知識
  • 有使用命令行工具和代碼編輯器的經驗

受衆

  • 希望學習如何使用OpenACC編程異構設備並利用其並行性的開發者
  • 希望編寫可在不同平臺和設備上運行的可移植和可擴展代碼的開發者
  • 希望探索異構編程的高級方面並優化代碼效率的程序員
 28 時間:

課程分類