2017-10-06 97 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

相关问题