返回課程
AI022 Professional

AMD HIP 程式設計指南

一份完整的技術手冊,介紹異構計算介面可移植性(HIP)。它提供 C++ 執行時 API 與核心語言,讓開發者能從單一原始碼建立可在 AMD 與 NVIDIA GPU 上執行的可攜式應用程式。本指南涵蓋安裝、環境設定、程式設計模型、記憶體配置,以及將 CUDA 程式碼轉換至 HIP 的工具。

4.9
12.0h
841 學習者
0 讚好
人工智能
開始學習

課程總覽

📚 內容摘要

一份針對異質運算介面可攜性(HIP)的完整技術手冊。它提供 C++ 執行時 API 與內核語言,讓開發者能從單一原始碼建立可在 AMD 與 NVIDIA GPU 上執行的可攜應用程式。本指南涵蓋安裝、環境設定、程式設計模型、記憶體配置,以及將 CUDA 程式碼轉換至 HIP 所需的工具。

掌握可攜式 GPU 程式設計:一套原始碼適用於 AMD 與 NVIDIA 平台。

作者: Advanced Micro Devices, Inc.(AMD)

致謝: AMD、AMD Arrow 商標、AMD Instinct、Radeon、ROCm 及其組合均為 Advanced Micro Devices, Inc. 之商標。Linux 為 Linus Torvalds 之註冊商標。PCIe 為 PCI-SIG Corporation 之註冊商標。

🎯 學習目標

  1. 定義 HIP 框架的主要特性與價值主張。
  2. 示範如何使用系統工具存取與查詢 HIP 環境。
  3. 解釋 HIP 可攜性與其編譯器技術之間的架構關係。
  4. 執行針對 NVIDIA 與 AMD 環境的平台特定安裝。
  5. 協調多來源庫的建置流程,以從原始碼編譯 HIP。
  6. 使用系統設定與驗證工具確認安裝成功。
  7. 配置與管理 GPU 記憶體,包含 HIP 記憶體配置、一致性控制與零複製主機記憶體可見性。
  8. 使用 HIP 特有的函數/變數修飾符、向量類型與同步原語開發高效率核心程式。
  9. 利用波長內操作(warp shuffle)、投票(vote)、投標(ballot)與合作群組功能實作進階平行演算法。
  10. 使用 HIPIFY 工具自動轉換 CUDA 程式碼至 HIP,並管理就地專案轉換。

🔹 第 1 課:HIP 可攜性與架構入門

概觀: 本課介紹異質運算介面可攜性(HIP)的基礎概念。內容聚焦於定義 HIP 的核心特徵、主要的存取方式,以及支援跨不同 GPU 架構(AMD 與 NVIDIA)無縫可攜性的底層編譯器技術。

學習成果:

  • 定義 HIP 框架的主要特性與價值主張。
  • 示範如何使用系統工具存取與查詢 HIP 環境。
  • 解釋 HIP 可攜性與其編譯器技術之間的架構關係。

🔹 第 2 課:安裝與驗證 HIP 環境

概觀: 本課提供在不同硬體平台部署 HIP(異質運算介面可攜性)環境的技術指南。內容涵蓋 AMD 與 NVIDIA 後端的特定安裝步驟、從原始碼庫建置 HIP 執行時的複雜流程,以及最終的驗證程序,以確保系統已準備就緒進行 GPU 開發。

學習成果:

  • 執行針對 NVIDIA 與 AMD 環境的平台特定安裝。
  • 協調多來源庫的建置流程,以從原始碼編譯 HIP。
  • 使用系統設定與驗證工具確認安裝成功。

🔹 第 3 課:HIP 程式設計模型與 API 深入探討

概觀: 本課全面探討異質運算介面可攜性(HIP)的程式設計模型。內容涵蓋記憶體管理與核心執行的基礎 API、HIP 內核語言的細節(包含修飾符與內建變數),以及進階功能如波長級原語、合作群組與特殊數學內建指令。

學習成果:

  • 使用 HIP 記憶體配置、一致性控制與零複製主機記憶體可見性來配置與管理 GPU 記憶體。
  • 使用 HIP 特有的函數/變數修飾符、向量類型與同步原語開發高效率核心程式。
  • 利用波長內操作(warp shuffle)、投票(vote)、投標(ballot)與合作群組功能實作進階平行演算法。

🔹 第 4 課:將 CUDA 應用程式遷移與轉換至 HIP

概觀: 本課介紹將 CUDA 原始碼系統性地遷移至 HIP(異質運算介面可攜性)框架的過程。內容詳述自動化工具如 HIPIFY 的使用方式、專案轉換策略、識別平台特定編譯器行為(HIP-Clang 與 NVIDIA 之間差異),以及處理架構差異的方法。

學習成果:

  • 使用 HIPIFY 工具自動轉換 CUDA 程式碼至 HIP,並管理就地專案轉換。
  • 使用預處理器巨集與環境查詢區分 AMD 與 NVIDIA 目標平台與編譯器。
  • 實作架構功能檢查(HIP_ARCH),並針對特殊 CUDA 函數如 memcpyToSymbol 進行對應修正。