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

觀眾

  • 希望學習 GPU 程式設計基礎知識以及開發GPU應用程式的主要框架和工具的開發人員
  • 希望編寫可在不同平臺和設備上運行的可移植和可擴展代碼的開發人員
  • 希望探索 GPU 程式設計和優化的好處和挑戰的程式師
Overview:

GPU 程式設計是一種利用 GPU 的並行處理能力來加速需要高性能計算的應用程式的技術,例如人工智慧、遊戲、圖形和科學計算。有幾種框架和工具可以實現 GPU 程式設計,每種框架和工具都有自己的優點和缺點。一些最受歡迎的是 OpenCL、CUDA、ROCm 和 HIP。

這種以講師為主導的現場培訓(現場或遠端)針對的是希望學習GPU程式設計基礎知識以及開發GPU應用程式的主要框架和工具的初級到中級開發人員。

  • 在培訓結束時,參與者將能夠:
    瞭解 CPU 和 GPU 計算之間的區別以及 GPU 程式設計的好處和挑戰。
  • 為他們的 GPU 應用程式選擇正確的框架和工具。
  • 創建一個基本的 GPU 程式,該程式使用一個或多個框架和工具執行向量加法。
  • 使用相應的 API、語言和庫來查詢設備資訊、分配和解除分配設備記憶體、在主機和設備之間複製數據、啟動內核以及同步線程。
  • 使用相應的記憶體空間(如全域、本地、常量和專用)來優化數據傳輸和記憶體訪問。
  • 使用相應的執行模型(如工作項、工作組、線程、塊和網格)來控制並行度。
  • 使用 CodeXL 、 CUDA-GDB 、 CUDA-MEMCHECK 和 NVIDIA Nsight 等工具調試和測試 GPU 程式。
  • 使用合併、緩存、預取和分析等技術優化 GPU 程式。

課程形式

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

課程自定義選項

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

介紹

  • 什麼是 GPU 程式設計?
  • 為什麼要使用 GPU 程式設計?
  • GPU 程式設計的挑戰和權衡是什麼?
  • GPU 程式設計的框架和工具是什麼?
  • 為您的應用程式選擇正確的框架和工具

OpenCL

  • 什麼是OpenCL?
  • OpenCL的優點和缺點是什麼?
  • 為 OpenCL 設置開發環境
  • 創建一個執行向量加法的基本 OpenCL 程式
  • 使用 OpenCL API 查詢設備資訊、分配和釋放設備記憶體、在主機和設備之間複製數據、啟動內核和同步線程
  • 使用 OpenCL C 語言編寫在設備上執行的內核並操作數據
  • 使用 OpenCL 內置函數、變數和庫執行常見任務和操作
  • 使用 OpenCL 記憶體空間(例如全域、本地、常量和專用)來優化數據傳輸和記憶體訪問
  • 使用 OpenCL 執行模型來控制定義並行度的工作項、工作組和 ND 範圍
  • 使用 CodeXL 等工具調試和測試 OpenCL 個程式
  • 使用合併、緩存、預取和分析等技術優化 OpenCL 個程式

CUDA的

  • 什麼是CUDA?
  • CUDA的優缺點是什麼?
  • 設置 CUDA 的開發環境
  • 創建一個執行向量加法的基本 CUDA 程式
  • 使用 CUDA API 查詢設備資訊、分配和釋放設備記憶體、在主機和設備之間複製數據、啟動內核和同步線程
  • 使用 CUDA C/C++ 語言編寫在設備上執行的內核並操作數據
  • 使用 CUDA 內建函數、變數和庫執行常見任務和操作
  • 使用 CUDA 記憶體空間(例如全域、共用、常量和本地)來優化數據傳輸和記憶體訪問
  • 使用 CUDA 執行模型來控制定義並行度的線程、塊和網格
  • 使用 CUDA-GDB、CUDA-MEMCHECK 和 NVIDIA Nsight 等工具調試和測試 CUDA 程式
  • 使用合併、緩存、預取和分析等技術優化 CUDA 程式

中華民國

  • 什麼是ROCm?
  • ROCm的優缺點是什麼?
  • 為 ROCm 設定開發環境
  • 創建執行向量加法的基本 ROCm 程式
  • 使用 ROCm API 查詢設備資訊、分配和釋放裝置記憶體、在主機和設備之間複製數據、啟動內核和同步線程
  • 使用 ROCm C/C++ 語言編寫在設備上執行的內核並操作數據
  • 使用 ROCm 內建函數、變數和庫執行常見任務和操作
  • 使用 ROCm 記憶體空間(如全域、本地、常量和專用)來優化數據傳輸和記憶體訪問
  • 使用 ROCm 執行模型來控制定義並行度的線程、塊和網格
  • 使用 ROCm Debugger 和 ROCm Profiler 等工具調試和測試 ROCm 程式
  • 使用合併、緩存、預取和分析等技術優化 ROCm 程式

臀部

  • 什麼是HIP?
  • HIP的優點和缺點是什麼?
  • 設置 HIP 的開發環境
  • 創建執行向量加法的基本 HIP 程式
  • 使用 HIP 語言編寫在設備上執行的內核並操作數據
  • 使用 HIP 內置函數、變數和庫執行常見任務和操作
  • 使用 HIP 記憶體空間(如全域、共用、常量和本地)來優化數據傳輸和記憶體訪問
  • 使用 HIP 執行模型來控制定義並行度的線程、塊和網格
  • 使用 ROCm Debugger 和 ROCm Profiler 等工具調試和測試 HIP 程式
  • 使用合併、緩存、預取和分析等技術優化 HIP 程式

比較

  • 比較 OpenCL、CUDA、ROCm 和 HIP 的功能、性能和相容性
  • 使用基準和指標評估 GPU 個程式
  • 學習 GPU 程式設計的最佳實踐和技巧
  • 探索 GPU 程式設計的當前和未來趨勢和挑戰

總結和下一步

Sites Published:

United Arab Emirates - Introduction to GPU Programming

Qatar - Introduction to GPU Programming

Egypt - Introduction to GPU Programming

Saudi Arabia - Introduction to GPU Programming

South Africa - Introduction to GPU Programming

Brasil - Introduction to GPU Programming

Canada - Introduction to GPU Programming

中国 - Introduction to GPU Programming

香港 - Introduction to GPU Programming

澳門 - Introduction to GPU Programming

台灣 - Introduction to GPU Programming

USA - Introduction to GPU Programming

Österreich - Introduction to GPU Programming

Schweiz - Introduction to GPU Programming

Deutschland - Introduction to GPU Programming

Czech Republic - Introduction to GPU Programming

Denmark - Introduction to GPU Programming

Estonia - Introduction to GPU Programming

Finland - Introduction to GPU Programming

Greece - Introduction to GPU Programming

Magyarország - Introduction to GPU Programming

Ireland - Introduction to GPU Programming

Luxembourg - Introduction to GPU Programming

Latvia - Introduction to GPU Programming

España - Introduction to GPU Programming

Italia - Introduction to GPU Programming

Lithuania - Introduction to GPU Programming

Nederland - Introduction to GPU Programming

Norway - Introduction to GPU Programming

Portugal - Introduction to GPU Programming

România - Introduction to GPU Programming

Sverige - Introduction to GPU Programming

Türkiye - Introduction to GPU Programming

Malta - Introduction to GPU Programming

Belgique - Introduction to GPU Programming

France - Introduction to GPU Programming

日本 - Introduction to GPU Programming

Australia - Introduction to GPU Programming

Malaysia - Introduction to GPU Programming

New Zealand - Introduction to GPU Programming

Philippines - Introduction to GPU Programming

Singapore - Introduction to GPU Programming

Thailand - Introduction to GPU Programming

Vietnam - Introduction to GPU Programming

India - Introduction to GPU Programming

Argentina - Introduction to GPU Programming

Chile - Introduction to GPU Programming

Costa Rica - Introduction to GPU Programming

Ecuador - Introduction to GPU Programming

Guatemala - Introduction to GPU Programming

Colombia - Introduction to GPU Programming

México - Introduction to GPU Programming

Panama - Introduction to GPU Programming

Peru - Introduction to GPU Programming

Uruguay - Introduction to GPU Programming

Venezuela - Introduction to GPU Programming

Polska - Introduction to GPU Programming

United Kingdom - Introduction to GPU Programming

South Korea - Introduction to GPU Programming

Pakistan - Introduction to GPU Programming

Sri Lanka - Introduction to GPU Programming

Bulgaria - Introduction to GPU Programming

Bolivia - Introduction to GPU Programming

Indonesia - Introduction to GPU Programming

Kazakhstan - Introduction to GPU Programming

Moldova - Introduction to GPU Programming

Morocco - Introduction to GPU Programming

Tunisia - Introduction to GPU Programming

Kuwait - Introduction to GPU Programming

Oman - Introduction to GPU Programming

Slovakia - Introduction to GPU Programming

Kenya - Introduction to GPU Programming

Nigeria - Introduction to GPU Programming

Botswana - Introduction to GPU Programming

Slovenia - Introduction to GPU Programming

Croatia - Introduction to GPU Programming

Serbia - Introduction to GPU Programming

Bhutan - Introduction to GPU Programming

Nepal - Introduction to GPU Programming

Uzbekistan - Introduction to GPU Programming