如何使用Clang将OpenCL内核编译为SPIR-V

时间:2018-09-18 14:27:29

标签: clang opencl llvm-clang vulkan spir-v

我需要在SPIR-V中编译OpenCL内核才能与Vulkan一起使用,我曾尝试与Google CLSPV https://github.com/google/clspv一起使用,但是矢量化出现问题,vload8之类的功能不起作用。因此,我需要使用clang在SPIR-V中编译OpenCL内核。

3 个答案:

答案 0 :(得分:6)

我是Clspv的项目负责人。杰西总体来说是正确的。

目前故意缺乏对长度为8和16的向量的支持。
这是因为Vulkan本身不支持该功能。
我们尚未添加支持来模仿此类支持,甚至在中期也没有计划这样做。
有关旧的已关闭问题的更多信息:
https://github.com/google/clspv/issues/8

答案 1 :(得分:3)

Clspv是我所知道的唯一将OpenCL C编译为与Vulkan兼容的SPIR-V的工具链。您需要针对Clspv提出问题;附加无法正确编译的内核会很有帮助。

答案 2 :(得分:0)

https://github.com/KhronosGroup/SPIR/tree/spirv-1.1

您可以关注此Khronos项目。

  

clang -cc1 -emit-spirv -triple = spir-unknown-unknown -cl-std = c ++ -I   include kernel.cl -o kernel.spv#对于OpenCL C ++

     

c -cc1 -emit-spirv -triple = spir-unknown-unknown -cl-std = CL2.0   -include opencl.h kernel.cl -o kernel.spv#对于OpenCL C