OpenCL™(開放計算語言)概述


OpenCL™(開放計算語言)概述

異構系統並行編程的開准

OpenCL™(開放計算語言)是一種開放的、免版稅的標准,用於對超級計算機、雲服務器、個人計算機、移動設備和嵌入式平台中的,各種加速器進行跨平台並行編程。OpenCL 極大地提高了眾多市場類別中,廣泛應用程序的速度和響應能力,包括專業創意工具、科學和醫療軟件、視覺處理,以及神經網絡訓練和推理。

OpenCL 3.0 最終版來了!

OpenCL 3.0 最終規范於 2020 年 9 月 30 日發布。

OpenCL 3.0 重新調整了 OpenCL 路線圖,使硬件供應商能夠廣泛部署開發人員要求的功能,並通過使符合標准的 OpenCL 實施,能夠專注於與其目標市場相關的功能,顯着提高部署靈活性。OpenCL 3.0 還將子組功能集成到核心規范中,隨附了新的統一 API 和 OpenCL C 3.0 語言規范,並引入了異步數據復制的擴展,以支持新型嵌入式處理。

對 OpenCL 的行業支持

NVIDIA 歡迎 OpenCL 3.0 專注於定義基線,以使開發關鍵功能,能夠在規范的未來版本中得到廣泛采用。NVIDIA 將在規范最終確定后,發布符合標准的 OpenCL 3.0,正在努力定義 Vulkan® 互操作擴展,擴展與分層 OpenCL 實現結合,將提高 OpenCL 開發人員的部署靈活性。

 

用於低級並行編程的 OpenCL

OpenCL 通過將算力最大的代碼,部署到加速器處理器或設備上,加速應用程序。OpenCL 開發人員使用基於 C 或 C++ 的內核語言編寫程序,通過設備編譯器,將這些程序在加速器設備上並行執行。

 

OpenCL 與 Khronos 並行加速標准的關系

OpenCL 為業界提供了最低的“close-to-metal”的processor-agile execution layer處理器敏捷執行層,用於加速應用程序、庫和引擎,並為編譯器提供生成目標代碼。與 Vulkan 等“僅限 GPU”的 API 不同,OpenCL 支持使用多種加速器,包括多核 CPU、GPU、DSP、FPGA 和專用硬件,例如推理引擎。

 

OpenCL 部署靈活性

隨着平台和設備的行業格局變得越來越復雜,工具正在不斷發展,OpenCL 應用程序能夠部署到本地 OpenCL 驅動程序的平台上。例如,開源clspv 編譯器clvk API 轉換器,使 OpenCL 應用程序能夠在 Vulkan 運行時上運行。這為 OpenCL 開發人員部署 OpenCL 應用程序,提供了極大的靈活性。

 

開源軟件工具,使 OpenCL 內核能夠在多個目標 API 上執行。

OpenCL 編程模型

OpenCL 應用程序分為主機和設備部分,主機代碼使用通用編程語言(例如 C 或 C++)編寫,並由傳統編譯器編譯,在主機 CPU 上執行。

設備編譯階段可以在線完成,即在線使用特殊 API 調用執行應用程序。可以在執行應用程序之前,編譯成機器二進制或由 Khronos 定義的,稱為SPIR-V 的特殊可移植中間表示。還有一些特定領域的語言和框架,可以使用源到源的編譯,生成二進制/SPIR-V 編譯為 OpenCL,例如 Halide。

 

應用程序主機代碼,通常用 C 或 C++ 編寫,可以使用其它語言的綁定,例如 Python。內核程序可以用 C (OpenCL C) 或 C++ (C++ for OpenCL) 的語言編寫,使開發人員能夠在內核程序中,編寫其應用程序的計算密集型部分。OpenCL C 語言的所有版本都基於 C99。社區驅動的 OpenCL 語言 C++, 匯集了 OpenCL 和 C++17 的功能。

用於 OpenCL 內核語言的 C++

OpenCL的工作組,已經從OpenCL中2.0第一定義為C ++,針對OpenCL開發由開源社區提供改進的功能,並與OpenCL的C,C++兼容,針對OpenCL被支持的原始的OpenCL C ++內核語言,轉換Clang 及其文檔。使開發人員能夠使用 OpenCL 內核中的大多數 C++17 功能。在很大程度上與 OpenCL C 2.0 向后兼容,使其可用於使用 OpenCL 2.0 或更高版本,以及支持 SPIR-V加速器進行編程的驅動程序。可以通過OpenCL 支持頁面進行跟蹤,在 Clang 中實現。

 

內核語言擴展

一些擴展可用於現有已發布的內核語言標准。此類擴展有完整列表記錄。符合標准的編譯器和驅動程序,可以選擇支持擴展,因此,有一種機制可以在編譯時檢測支持。開發人員應注意,並非所有設備都支持所有擴展。

符合 OpenCL 的實現

可以查看符合 OpenCL 實施的硬件供應商列表。

 

參考鏈接:

https://www.khronos.org/opencl/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM