assembly - 在设备上实现 OpenCL 需要采取哪些步骤?

标签 assembly compilation opencl specifications spir-v

假设我有一个设备,虽然它有能力支持,但目前不支持 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,我需要采取哪些实际步骤?

最佳答案

那么您必须提供 open cl api 的实现。此 api 实现需要为您的架构高效地编译 opencl 内核。

要支持某些功能集(即 OpenCL 版本和扩展),您需要支持 api 和 opencl c/c++ 内核语言中的某些功能。所有这些都在 open cl 标准中指定,您可以在 khronos website 上找到该标准.

为了简化整个过程,intel、nvidia、amd 等公司的编译器都基于 LLVM。如果您需要进一步减少工作量,那么查看 POCL 可能也是一种选择。

您的系统是否具有自定义架构,或者它只是一个自定义软件堆栈?

关于assembly - 在设备上实现 OpenCL 需要采取哪些步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46608362/

相关文章:

c++ - 如何让 VS2013 停止生成对 __dtol3、__dtoui3 和其他整数类型转换函数的调用?

linux - x86-64 位汇编 Linux 输入

c - 链接目标文件,使包含变得多余?

c++ - const 常量操作是否在运行时评估?

cuda - 在 CUDA 中写入全局内存

python - PyOpenCL 程序未返回预期输出

opencl - 我可以使用外部 OpenCl 库吗?

assembly - sub eax,0-它有作用吗?

c++ - VirtualAlloc C++,注入(inject)的dll,asm

C++ - 代码在 Debug 中编译但在 Release 中不编译