3

假设我有一个设备,虽然它有能力支持,但目前不支持 OpenCL。我有 ISA、硬件设计文档和许多其他文档。我的设备所在的系统目前有 C 和 C++ 编译器,并且支持许多 linux 发行版。

现在我想为我的设备添加 OpenCL(假设是最新版本,2.2)支持。为了支持我的设备,我实际上需要做什么?我在他们的网站上看到了 SPIR-V 的文档,即:SPIR-V 注册表页面opencl 扩展指令集概述普通 spir-V 概述

现在假设我实现了一个 SPIR-V-to-my-device-ISA 编译器,我现在支持 OpenCL 2.2 吗?我看到另一个 OpenCL 注册表,但我没有看到“如果您实现这些功能,编写执行此操作的代码等。您现在已经在您的系统上实现了 OpenCL 2.2 规范”。

为了为我的设备实施 OpenCL,我需要采取哪些实际步骤?

4

2 回答 2

1

好吧,您必须提供 open cl api 的实现。此 api 实现需要为您的架构有效地编译 opencl 内核。

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

为了简化整个过程,英特尔、nvidia、amd 等公司都将他们的编译器基于 LLVM。如果您需要进一步减少工作量,也可以选择查看 POCL。

您的系统是否具有自定义架构,还是只是自定义软件堆栈?

于 2017-10-06T20:49:35.767 回答
0

我将从pocl开始并添加一个后端(http://portablecl.org/)。其他一切都已经完成。

于 2017-10-06T21:23:23.503 回答