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