Course Code: amdgpuprog
Duration: 28 hours
Prerequisites:
  • 瞭解 C/C++ 語言和並行程式設計概念
  • 計算機體系結構和記憶體層次結構的基礎知識
  • 具有命令行工具和代碼編輯器的經驗

觀眾

  • 希望瞭解如何使用 ROCm 和 HIP 對 AMD GPU 進行程式設計並利用其並行性的開發人員
  • 希望編寫可在不同 AMD 設備上運行的高性能和可擴展代碼的開發人員
  • 希望探索 GPU 程式設計的低級方面並優化其代碼性能的程式師
Overview:

ROCm 是一個用於 GPU 程式設計的開源平臺,支援 AMD GPU,還提供與 CUDA 和 OpenCL 的相容性。ROCm 使程式師瞭解硬體細節,並完全控制並行化過程。但是,這也需要對設備架構、記憶體模型、執行模型和優化技術有很好的理解。

HIP 是一種 C++ 運行時 API 和內核語言,允許您編寫可在 AMD 和 NVIDIA GPU 上運行的可移植代碼。 HIP 在原生 GPU API(如 ROCm 和 CUDA)上提供了一個精簡的抽象層,並允許您利用現有的 GPU 庫和工具。

這種以講師為主導的現場培訓(現場或遠端)針對希望使用ROCm和HIP對AMD GPU進行程式設計並利用其並行性的初級到中級開發人員。

在培訓結束時,參與者將能夠:

  • 設置包含 ROCm 平臺、AMD GPU 和 Visual Studio 代碼的開發環境。
  • 創建一個基本的 ROCm 程式,該程式對 GPU 執行向量加法並從 GPU 記憶體中檢索結果。
  • 使用 ROCm API 查詢設備資訊、分配和釋放裝置記憶體、在主機和設備之間複製數據、啟動內核和同步線程。
  • 使用 HIP 語言編寫在 GPU 上執行的內核並操作數據。
  • 使用 HIP 內置函數、變數和庫來執行常見任務和操作。
  • 使用 ROCm 和 HIP 記憶體空間(如全域、共用、常量和本地)來優化數據傳輸和記憶體訪問。
  • 使用 ROCm 和 HIP 執行模型來控制定義並行度的線程、塊和網格。
  • 使用 ROCm Debugger 和 ROCm Profiler 等工具調試和測試 ROCm 和 HIP 程式。
  • 使用合併、緩存、預取和分析等技術優化 ROCm 和 HIP 程式。

課程形式

  • 互動講座和討論。
  • 大量的練習和練習。
  • 在現場實驗室環境中動手實施。

課程自定義選項

  • 如需申請本課程的定製培訓,請聯繫我們進行安排。
Course Outline:

介紹

  • 什麼是ROCm?
  • 什麼是HIP?
  • ROCm 與 CUDA 與 OpenCL
  • ROCm 和 HIP 功能和體系結構概述
  • 設置開發環境

開始

  • 使用 Visual Studio 代碼創建新的 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 代碼調試器檢查變數、斷點、調用堆疊等。
  • 使用 ROCm 除錯器除錯 AMD 裝置上的 ROCm 和 HIP 程式
  • 使用 ROCm Profiler 分析 AMD 設備上的 ROCm 和 HIP 程式

優化

  • 了解影響 ROCm 和 HIP 程式性能的因素
  • 使用 ROCm 和 HIP 合併技術提高記憶體輸送量
  • 使用 ROCm 和 HIP 快取技術來減少記憶體延遲
  • 使用 ROCm 和 HIP 共用記憶體和本地記憶體技術來優化記憶體訪問和頻寬
  • 使用 ROCm 和 HIP 分析和分析工具來衡量和改進執行時間和資源利用率

總結和下一步

Sites Published:

United Arab Emirates - AMD GPU Programming

Qatar - AMD GPU Programming

Egypt - AMD GPU Programming

Saudi Arabia - AMD GPU Programming

South Africa - AMD GPU Programming

Brasil - AMD GPU Programming

Canada - AMD GPU Programming

中国 - AMD GPU Programming

香港 - AMD GPU Programming

澳門 - AMD GPU Programming

台灣 - AMD GPU Programming

USA - AMD GPU Programming

Österreich - AMD GPU Programming

Schweiz - AMD GPU Programming

Deutschland - AMD GPU Programming

Czech Republic - AMD GPU Programming

Denmark - AMD GPU Programming

Estonia - AMD GPU Programming

Finland - AMD GPU Programming

Greece - AMD GPU Programming

Magyarország - AMD GPU Programming

Ireland - AMD GPU Programming

Luxembourg - AMD GPU Programming

Latvia - AMD GPU Programming

España - AMD GPU Programming

Italia - AMD GPU Programming

Lithuania - AMD GPU Programming

Nederland - AMD GPU Programming

Norway - AMD GPU Programming

Portugal - AMD GPU Programming

România - AMD GPU Programming

Sverige - AMD GPU Programming

Türkiye - AMD GPU Programming

Malta - AMD GPU Programming

Belgique - AMD GPU Programming

France - AMD GPU Programming

日本 - AMD GPU Programming

Australia - AMD GPU Programming

Malaysia - AMD GPU Programming

New Zealand - AMD GPU Programming

Philippines - AMD GPU Programming

Singapore - AMD GPU Programming

Thailand - AMD GPU Programming

Vietnam - AMD GPU Programming

India - AMD GPU Programming

Argentina - AMD GPU Programming

Chile - AMD GPU Programming

Costa Rica - AMD GPU Programming

Ecuador - AMD GPU Programming

Guatemala - AMD GPU Programming

Colombia - AMD GPU Programming

México - AMD GPU Programming

Panama - AMD GPU Programming

Peru - AMD GPU Programming

Uruguay - AMD GPU Programming

Venezuela - AMD GPU Programming

Polska - AMD GPU Programming

United Kingdom - AMD GPU Programming

South Korea - AMD GPU Programming

Pakistan - AMD GPU Programming

Sri Lanka - AMD GPU Programming

Bulgaria - AMD GPU Programming

Bolivia - AMD GPU Programming

Indonesia - AMD GPU Programming

Kazakhstan - AMD GPU Programming

Moldova - AMD GPU Programming

Morocco - AMD GPU Programming

Tunisia - AMD GPU Programming

Kuwait - AMD GPU Programming

Oman - AMD GPU Programming

Slovakia - AMD GPU Programming

Kenya - AMD GPU Programming

Nigeria - AMD GPU Programming

Botswana - AMD GPU Programming

Slovenia - AMD GPU Programming

Croatia - AMD GPU Programming

Serbia - AMD GPU Programming

Bhutan - AMD GPU Programming

Nepal - AMD GPU Programming

Uzbekistan - AMD GPU Programming