2017-10-06 89 views
2

可以說我有一個雖然有支持能力的設備,但目前不支持OpenCL。我有ISA,硬件設計文檔和許多其他文檔。我設備所在的系統目前擁有C和C++編譯器,並且支持許多Linux發行版。需要採取哪些步驟在設備上實現OpenCL?

現在我想添加OpenCL(可以說最新版本2.2)支持到我的設備。爲了讓我的設備得到支持,我實際上需要做些什麼?我在他們的網站上看到SPIR-V的文件,即:SPIR-V registry pageopencl extended instruction set overviewnormal spir-V overview

現在讓我說我實現了SPIR-V-to-my-device-ISA編譯器,我現在是否支持OpenCL 2.2?我看到another registry for OpenCL,但我沒有看到一句話說:「如果你實現這些功能,編寫這樣的代碼等等,你現在已經在你的系統上實現了OpenCL 2.2規範。

爲了實現設備的OpenCL,我需要採取哪些實際步驟?

回答

1

那麼你必須提供一個open cl api的實現。這個api實現需要爲您的架構有效地編譯opencl內核。

爲了支持某些功能(意味着OpenCL版本和擴展),您需要支持api和opencl c/C++內核語言中的某些功能。所有這些東西都在開放式的CL標準中有詳細說明,您可以在khronos website上找到。

爲了簡化像intel,nvidia,amd等所有公司的整個流程,他們都將其編譯器基於LLVM。如果您需要進一步減少工作量,那麼查看POCL可能也是一種選擇。

您的系統是否有自定義架構,還是隻是一個自定義軟件堆棧?

+0

我不支持通過opencl擴展編譯爲SPIR-V來支持opencl內核嗎?我認爲這些內核從2.0開始編譯爲SPIR-V。我正在爲一個沒有opencl規範的GPU編寫這個程序。據我所知,這個GPU組件沒有LLVM。我對如何製作支持OpenCL的東西感到困惑。我只是從SPIR-V或LLVM編寫一個編譯器到我的程序集?我認爲我的SOC上的CPU已經支持OpenCL,這只是在同一塊主板上的一個獨立設備。允許主機cl訪問設備的步驟是什麼? – snb

+0

您還需要運行時功能,只是編譯器可能不夠。像@Dithermaster也表示,從POCL開始可能是最安全的選擇。不幸的是,他們都以某種形式使用llvm。 – MichaelE1000

相關問題