課程簡介

介紹

  • 什麼是OpenCL?
  • OpenCL vs CUDA vs 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擴展和庫,如atomic、image、cl_khr_fp16等

OpenCL內存模型

  • 理解主機和設備內存模型的區別
  • 使用OpenCL內存空間,如全局、局部、常量和私有
  • 使用OpenCL內存對象,如緩衝區、圖像和管道
  • 使用OpenCL內存訪問模式,如只讀、只寫、讀寫等
  • 使用OpenCL內存一致性模型和同步機制

OpenCL執行模型

  • 理解主機和設備執行模型的區別
  • 使用OpenCL工作項、工作組和ND範圍定義並行性
  • 使用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程序中的常見錯誤和bug
  • 使用Visual Studio Code調試器檢查變量、斷點、調用棧等
  • 使用CodeXL在AMD設備上調試和分析OpenCL程序
  • 使用Intel VTune在Intel設備上調試和分析OpenCL程序
  • 使用NVIDIA Nsight在NVIDIA設備上調試和分析OpenCL程序

優化

  • 理解影響OpenCL程序性能的因素
  • 使用OpenCL向量數據類型和向量化技術提高算術吞吐量
  • 使用OpenCL循環展開和循環平鋪技術減少控制開銷並增加局部性
  • 使用OpenCL局部內存和局部內存函數優化內存訪問和帶寬
  • 使用OpenCL性能分析和性能分析工具測量並改進執行時間和資源利用率

總結與下一步

最低要求

  • 瞭解C/C++語言和並行編程概念
  • 具備計算機架構和內存層次結構的基本知識
  • 有使用命令行工具和代碼編輯器的經驗

受衆

  • 希望學習如何使用OpenCL編程異構設備並利用其並行性的開發者
  • 希望編寫可在不同平臺和設備上運行的便攜且可擴展代碼的開發者
  • 希望探索異構編程的低級方面並優化代碼性能的程序員
 28 時間:

課程分類