假设我有一台设备,虽然它有能力支持,但目前不支持OpenCL。我有ISA,硬件设计文档和许多其他文档。我的设备当前所在的系统有C和C ++编译器,并且支持许多Linux发行版。
现在我想为我的设备添加OpenCL(比如最新版本,2.2)支持。为了支持我的设备,我实际需要做什么?我在他们的网站上看到了SPIR-V的文档,即:SPIR-V registry page,opencl extended instruction set overview,normal spir-V overview。
现在假设我实现了一个SPIR-V-to-my-device-ISA编译器,我现在支持OpenCL 2.2吗?我看到another registry for OpenCL但是我没有看到“如果您实现这些功能,编写执行此操作的代码等等的东西......您现在已在系统上实现了OpenCL 2.2规范”。
为了实现设备的OpenCL,我需要采取哪些实际步骤?
答案 0 :(得分:1)
那么你必须提供open cl api的实现。这个api实现需要为您的架构高效地编译opencl内核。
要支持某组功能(意味着OpenCL版本和扩展),您需要支持api和opencl c / c ++内核语言中的某些功能。所有这些都在open cl标准中指定,您可以在khronos website上找到。
为了简化整个过程公司,如intel,nvidia,amd,......所有的编译器都基于LLVM。如果你需要进一步减少努力,看看POCL也可能是一种选择。
您的系统是自定义架构还是只是自定义软件堆栈?
答案 1 :(得分:0)
我会从 pocl 开始,然后添加一个后端(http://portablecl.org/)。其他一切都已经完成。