聯繫我們

課程簡介

引言

  • 什麼是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工作項目、工作群組及ND範圍來定義平行性
  • 使用OpenCL工作項目函數,如get_global_id、get_local_id、get_group_id等
  • 使用OpenCL工作群組函數,如屏障、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對異質裝置進行程式設計並發揮其平行運算能力的開發者。
  • 希望撰寫可跨不同平台和裝置執行的可攜式且具擴展性的程式碼的開發者。
  • 希望探索異質程式設計的底層層面並優化程式性能的程式設計師。
 28 小時

人數


每位參與者的報價

即將到來的課程

課程分類