儘管近年已經沒有密集使用 OpenCL
但最近同仁因工作而起的 OpenCL 相關實務討論還是令我相當感興趣與熱衷
雖然 OpenCL 在現今已不是各家密集發展的重點技術標準
然而在有實際應用場景需求, 但沒有更好的新標準, 儘管各家計算硬體開發商缺乏合作默契的情況之下(特別是 Mobile 平台), 繼續良好支援 OpenCL 似乎是實務上的一個共識了
這篇主要的目的是統整一下在 2023 的今日要著手 OpenCL 有哪些資料可以研讀
書籍
由於 OpenCL 3.0 標準是以 OpenCL 1.2 為基底, 因此過往的 OpenCL 圖書內容都還是相當實用. 至於談到 OpenCL 2.0 標準後新增的部份 (個人覺得現今 OpenCL runtime 逐漸完備下 device-side enqueue, subgroup 以及 pipe 都可以把玩一番), 而目前僅有一本參考書目可以研讀 - "Heterogeneous Computing with OpenCL 2.0", 這本書被標為 3rd edition 的原因是前面有著兩版談論 1.1 與 1.2 的兩個版本
標準與相關資訊
OpenCL 的制定組織統整了 OpenCL 相關的資源連結 - OpenCL Resource Guide
若要查找標準相關的資訊, 另外是相關的程式資源, 這裡算是參考資料翻找的入口
各 GPU vendor 提供的 OpenCL Programming Guide
由於各家還是有自己的 OpenCL runtime 與 compiler 實作, 因此在使用與實作 OpenCL 程式還是有各家平台在 Host 與 Device 中需要注意的一些細節. 這裡整理了各家目前提供的文件.
Intel
OpenCL Developer Guide for Intel® Processor Graphics
AMD
ROCm OpenCL Programming Guide (這是 archive.org 在去年底的備份, 其實不清楚為何 AMD 再最新的文件中將 OpenCL 的部份移除)
Nvidia
NVIDIA OpenCL Best Practices Guide Version 1.0
NVIDIA OpenCL SDK Code Samples
Qualcomm
Qualcomm Snapdragon Mobile Platform OpenCL General Programming and
Optimization (原名 Adreno OpenCL Programming Guide)
ARM
Mali GPU Bifrost Valhall OpenCL Developer Guide
Mali Midgard OpenCL Developer Guide
Imagination
A quick guide to writing OpenCL kernels for PowerVR Rogue GPUs (Imagination 事實上是有 OpenCL performance optimization 相關文件, 只是比較可惜的是僅會對客戶提供)
工具
與 Optimization Guide 類似, 由於 GPU hardware counter 並沒有一致性的標準與介面, 所以這部份比較可惜的是必須仰賴各家的 Offline Compiler 與 Profiler
Intel
Intel® Graphics Performance Analyzers
Ahead-of-Time Compilation for GPU