聯繫我們
 課程時長 28 時間:

課程簡介

簡介

  • 什麼是 OpenCL?
  • OpenCL 與 CUDA 及 SYCL 的比較
  • OpenCL 特徵與架構概覽
  • 設置開發環境

入門基礎

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

OpenCL API

  • 理解 OpenCL API 在主機程式中的角色
  • 使用 OpenCL API 查詢裝置資訊和功能
  • 使用 OpenCL API 建立執行緒環境、命令佇列、緩衝區、核心和事件
  • 使用 OpenCL API 排入命令,例如讀取、寫入、複製、映射、取消映射、執行和等待
  • 使用 OpenCL API 處理錯誤和異常

OpenCL C

  • 理解 OpenCL C 在裝置程式中的角色
  • 使用 OpenCL C 編寫在裝置上執行並操縱資料的核心程式
  • 使用 OpenCL C 資料型別、限定詞、運算子及表達式
  • 使用 OpenCL C 內建函式,如數學、幾何、關係運算等
  • 使用 OpenCL C 擴充套件函式庫,如原子操作、映像、cl_khr_fp16 等

OpenCL 記憶體模型

  • 理解主機與裝置記憶體模型之間的差異
  • 使用 OpenCL 記憶體空間,如全域、本地、常數和私有空間
  • 使用 OpenCL 記憶體物件,如緩衝區、映像和管道
  • 使用 OpenCL 記憶體存取模式,如唯讀、唯寫、讀寫等
  • 使用 OpenCL 記憶體一致性模型和同步機制

OpenCL 執行模型

  • 理解主機與裝置執行模型之間的差異
  • 使用 OpenCL 工作項目、工作群組和 N 維範圍來定義並行性
  • 使用 OpenCL 工作項目函式,如 get_global_id, get_local_id, get_group_id 等
  • 使用 OpenCL 工作群組函式,如 barrier, work_group_reduce, work_group_scan 等
  • 使用 OpenCL 裝置函式,如 get_num_groups, get_global_size, get_local_size 等

除錯

  • 理解 OpenCL 程式中常見的錯誤和故障
  • 使用 Visual Studio Code 除錯器檢查變數、斷點、呼叫堆疊等
  • 使用 CodeXL 在 AMD 裝置上除錯和分析 OpenCL 程式
  • 使用 Intel VTune 在 Intel 裝置上除錯和分析 OpenCL 程式
  • 使用 NVIDIA Nsight 在 NVIDIA 裝置上除錯和分析 OpenCL 程式

最佳化

  • 理解影響 OpenCL 程式效能的因素
  • 使用 OpenCL 向量資料型別和向量化技術来提高算數吞吐量
  • 使用 OpenCL 循環展開和循環分塊技術來減少控制開銷並提高局部性
  • 使用 OpenCL 本地記憶體和本地記憶體函式來最佳化記憶體存取和頻寬
  • 使用 OpenCL 效能分析和相關工具來衡量並改善執行時間和資源利用率

最低要求

  • 熟悉 C/C++ 語言及並行程式設計概念
  • 具備計算機架構和記憶體階層的基本知識
  • 具有使用命令列工具與程式碼編輯器的經驗

適用對象

  • 希望學習如何使用 OpenCL 對異質裝置進行程式設計並利用其並行性的開發者
  • 希望編寫可在不同平台和裝置上運行的可移植且具擴展性程式碼的開發者
  • 希望探索異質程式設計的底層細節並最佳化程式碼效能的程式設計師

課程分類