OpenCL™(开放计算语言)概述
OpenCL?(開放計算語言)概述
異構系統(tǒng)并行編程的開準
OpenCL?(開放計算語言)是一種開放的、免版稅的標準,用于對超級計算機、云服務器、個人計算機、移動設備和嵌入式平臺中的,各種加速器進行跨平臺并行編程。OpenCL 極大地提高了眾多市場類別中,廣泛應用程序的速度和響應能力,包括專業(yè)創(chuàng)意工具、科學和醫(yī)療軟件、視覺處理,以及神經網絡訓練和推理。
OpenCL 3.0 最終版來了!
OpenCL 3.0 最終規(guī)范于 2020 年 9 月 30 日發(fā)布。
OpenCL 3.0 重新調整了 OpenCL 路線圖,使硬件供應商能夠廣泛部署開發(fā)人員要求的功能,并通過使符合標準的 OpenCL 實施,能夠專注于與其目標市場相關的功能,顯著提高部署靈活性。OpenCL 3.0 還將子組功能集成到核心規(guī)范中,隨附了新的統(tǒng)一 API 和 OpenCL C 3.0 語言規(guī)范,并引入了異步數(shù)據(jù)復制的擴展,以支持新型嵌入式處理。
對 OpenCL 的行業(yè)支持
NVIDIA 歡迎 OpenCL 3.0 專注于定義基線,以使開發(fā)關鍵功能,能夠在規(guī)范的未來版本中得到廣泛采用。NVIDIA 將在規(guī)范最終確定后,發(fā)布符合標準的 OpenCL 3.0,正在努力定義 Vulkan? 互操作擴展,擴展與分層 OpenCL 實現(xiàn)結合,將提高 OpenCL 開發(fā)人員的部署靈活性。
用于低級并行編程的 OpenCL
OpenCL 通過將算力最大的代碼,部署到加速器處理器或設備上,加速應用程序。OpenCL 開發(fā)人員使用基于 C 或 C++ 的內核語言編寫程序,通過設備編譯器,將這些程序在加速器設備上并行執(zhí)行。
OpenCL 與 Khronos 并行加速標準的關系
OpenCL 為業(yè)界提供了最低的“close-to-metal”的processor-agile execution layer處理器敏捷執(zhí)行層,用于加速應用程序、庫和引擎,并為編譯器提供生成目標代碼。與 Vulkan 等“僅限 GPU”的 API 不同,OpenCL 支持使用多種加速器,包括多核 CPU、GPU、DSP、FPGA 和專用硬件,例如推理引擎。
OpenCL 部署靈活性
隨著平臺和設備的行業(yè)格局變得越來越復雜,工具正在不斷發(fā)展,OpenCL 應用程序能夠部署到本地 OpenCL 驅動程序的平臺上。例如,開源clspv 編譯器和clvk API 轉換器,使 OpenCL 應用程序能夠在 Vulkan 運行時上運行。這為 OpenCL 開發(fā)人員部署 OpenCL 應用程序,提供了極大的靈活性。
開源軟件工具,使 OpenCL 內核能夠在多個目標 API 上執(zhí)行。
OpenCL 編程模型
OpenCL 應用程序分為主機和設備部分,主機代碼使用通用編程語言(例如 C 或 C++)編寫,并由傳統(tǒng)編譯器編譯,在主機 CPU 上執(zhí)行。
設備編譯階段可以在線完成,即在線使用特殊 API 調用執(zhí)行應用程序??梢栽趫?zhí)行應用程序之前,編譯成機器二進制或由 Khronos 定義的,稱為SPIR-V 的特殊可移植中間表示。還有一些特定領域的語言和框架,可以使用源到源的編譯,生成二進制/SPIR-V 編譯為 OpenCL,例如 Halide。
應用程序主機代碼,通常用 C 或 C++ 編寫,可以使用其它語言的綁定,例如 Python。內核程序可以用 C (OpenCL C) 或 C++ (C++ for OpenCL) 的語言編寫,使開發(fā)人員能夠在內核程序中,編寫其應用程序的計算密集型部分。OpenCL C 語言的所有版本都基于 C99。社區(qū)驅動的 OpenCL 語言 C++, 匯集了 OpenCL 和 C++17 的功能。
用于 OpenCL 內核語言的 C++
OpenCL的工作組,已經從OpenCL中2.0第一定義為C ++,針對OpenCL開發(fā)由開源社區(qū)提供改進的功能,并與OpenCL的C,C++兼容,針對OpenCL被支持的原始的OpenCL C ++內核語言,轉換Clang 及其文檔。使開發(fā)人員能夠使用 OpenCL 內核中的大多數(shù) C++17 功能。在很大程度上與 OpenCL C 2.0 向后兼容,使其可用于使用 OpenCL 2.0 或更高版本,以及支持 SPIR-V加速器進行編程的驅動程序。可以通過OpenCL 支持頁面進行跟蹤,在 Clang 中實現(xiàn)。
內核語言擴展
一些擴展可用于現(xiàn)有已發(fā)布的內核語言標準。此類擴展有完整列表記錄。符合標準的編譯器和驅動程序,可以選擇支持擴展,因此,有一種機制可以在編譯時檢測支持。開發(fā)人員應注意,并非所有設備都支持所有擴展。
符合 OpenCL 的實現(xiàn)
可以查看符合 OpenCL 實施的硬件供應商列表。
參考鏈接:
https://www.khronos.org/opencl/
總結
以上是生活随笔為你收集整理的OpenCL™(开放计算语言)概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HBM显存与GPU
- 下一篇: Clang:LLVM 的 C 语言家族前