聯繫我們

課程簡介

介紹

  • 什麼是 ROCm?
  • 什麼是 HIP?
  • ROCm 與 CUDA 與 OpenCL 的比較
  • ROCm 和 HIP 的功能與架構概覽
  • 設定開發環境

入門起步

  • 使用 Visual Studio Code 建立新的 ROCm 專案
  • 探索專案結構與檔案
  • 編譯並執行程式
  • 使用 printf 和 fprintf 顯示輸出內容

ROCm API

  • 理解 ROCm API 在主機程式中的角色
  • 使用 ROCm API 查詢裝置資訊與功能
  • 使用 ROCm API 配置與釋放裝置記憶體
  • 使用 ROCm API 在主機與裝置間複製資料
  • 使用 ROCm API 啟動核心與同步化執行緒
  • 使用 ROCm API 處理錯誤與異常

HIP 語言

  • 理解 HIP 語言在裝置程式中的角色
  • 使用 HIP 語言編寫在 GPU 上執行的核心程式並操作資料
  • 使用 HIP 的資料類型、限定詞、運算子與運算式
  • 運用 HIP 內建函式、變數及函式庫來執行常見任務和運算

ROCm 與 HIP 記憶體模型

  • 理解主機與裝置記憶體模型的差異
  • 使用 ROCm 和 HIP 的記憶體空間,如全域、共享、常數和本地空間
  • 使用 ROCm 和 HIP 的記憶體物件,如指標、陣列、紋理和表面
  • 使用 ROCm 和 HIP 的記憶體存取模式,如唯讀、唯寫、讀寫等。
  • 使用 ROCm 和 HIP 的記憶體一致性模型與同步機制

ROCm 與 HIP 執行模型

  • 理解主機與裝置執行模型的差異
  • 使用 ROCm 和 HIP 的執行緒、區塊與網格來定義平行性
  • 使用 ROCm 和 HIP 的執行緒函式,如 hipThreadIdx_x、hipBlockIdx_x、hipBlockDim_x 等。
  • 使用 ROCm 和 HIP 的區塊函式,如 __syncthreads、__threadfence_block 等。
  • 使用 ROCm 和 HIP 的網格函式,如 hipGridDim_x、hipGridSync、合作群組等。

除錯

  • 理解 ROCm 和 HIP 程式中常見的錯誤與瑕疵
  • 使用 Visual Studio Code 偵錯工具檢查變數、斷點、呼叫堆疊等。
  • 在 AMD 裝置上使用 ROCm Debugger 除錯 ROCm 和 HIP 程式
  • 在 AMD 裝置上使用 ROCm Profiler 分析 ROCm 和 HIP 程式

最佳化

  • 理解影響 ROCm 和 HIP 程式效能的因素
  • 使用 ROCm 和 HIP 的交織技術來改善記憶體吞吐量
  • 使用 ROCm 和 HIP 的快取與預取技術來降低記憶體延遲
  • 使用 ROCm 和 HIP 的共享記憶體和本地記憶體技術來最佳化記憶體存取和頻寬。
  • 使用 ROCm 和 HIP 的效能剖析及工具來測量並改善執行時間與資源利用率。

摘要與後續步驟

最低要求

  • 具備 C/C++ 語言與平行程式設計概念的知識
  • 具備電腦架構和記憶體層次的基礎知識
  • 具備使用命令列工具和程式碼編輯器的經驗

目標受眾

  • 希望學習如何使用 ROCm 和 HIP 程式設計 AMD GPU 並發揮其平行運算能力的開發者。
  • 希望編寫能在不同 AMD 裝置上執行的高效能且具擴展性程式碼的開發者。
  • 希望探索 GPU 程式設計底層細節並最佳化程式碼效能的程式設計師。
 28 小時

課程分類