Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在设备上实现OpenCL需要采取哪些步骤?_Assembly_Compilation_Opencl_Specifications_Spir V - Fatal编程技术网

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

Assembly 在设备上实现OpenCL需要采取哪些步骤?,assembly,compilation,opencl,specifications,spir-v,Assembly,Compilation,Opencl,Specifications,Spir V,假设我有一个设备,虽然它有能力支持,但目前不支持OpenCL。我有ISA、硬件设计文档和许多其他文档。我所在的系统目前拥有C和C++编译器,并支持许多Linux发行版。p> 现在我想在我的设备上添加OpenCL(比如说最新版本2.2)支持。为了支持我的设备,我实际上需要做什么?我在他们的网站上看到了SPIR-V的文档,即: 现在让我们假设我实现了一个SPIR-V-to-my-device-ISA编译器,我现在支持OpenCL2.2吗?我明白了,但我没有看到一句话说“如果你实现了这些功能,那么就编

假设我有一个设备,虽然它有能力支持,但目前不支持OpenCL。我有ISA、硬件设计文档和许多其他文档。我所在的系统目前拥有C和C++编译器,并支持许多Linux发行版。p> 现在我想在我的设备上添加OpenCL(比如说最新版本2.2)支持。为了支持我的设备,我实际上需要做什么?我在他们的网站上看到了SPIR-V的文档,即:

现在让我们假设我实现了一个SPIR-V-to-my-device-ISA编译器,我现在支持OpenCL2.2吗?我明白了,但我没有看到一句话说“如果你实现了这些功能,那么就编写实现这些功能的代码……你现在已经在你的系统上实现了OpenCL2.2规范”


为了在我的设备上实现OpenCL,我需要采取哪些实际步骤

您必须提供开放式cl api的实现。这个api实现需要为您的体系结构高效地编译opencl内核

要支持一组特定的功能(意味着OpenCL版本和扩展),您需要支持api和OpenCLC/c++内核语言中的特定功能。所有这些都在开放式cl标准中指定,您可以在上找到

为了简化整个流程,英特尔、英伟达、amd等公司,。。。所有的编译器都基于LLVM。如果您需要进一步减少工作量,查看POCL也可能是一种选择


您的系统有自定义体系结构还是只是一个自定义软件堆栈?

我将从pocl开始,并添加一个后端()。其他一切都已经完成。

我是否会通过支持使用opencl扩展编译到SPIR-V来支持opencl内核?我以为那些内核是从2.0开始编译成SPIR-V的。我写这篇文章是为了一个在SOC上没有opencl规范的GPU。据我所知,这个GPU程序集没有LLVM。我对如何制作支持OpenCL的东西感到困惑。我是否只是从SPIR-V或LLVM向我的程序集编写编译器?我相信我的SOC上的cpu已经支持OpenCL了,这只是同一块板上的一个单独的设备,没有。允许主机cl访问设备的步骤是什么?您还需要运行时功能,仅仅一个编译器可能是不够的。就像@Dithermaster也说过的,从POCL开始可能是你最安全的赌注。不幸的是,它们都以某种形式使用llvm。