4

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

4

3 回答 3

6

我是 Clspv 的项目负责人。杰西总体上是对的。

暂时不支持长度为 8 和 16 的向量是故意的。
那是因为 Vulkan 本身不支持这一点。
我们还没有添加支持来模仿这种支持,即使在中期也没有计划这样做。
关于旧的已关闭问题的更多信息:
https ://github.com/google/clspv/issues/8

于 2018-09-18T16:45:35.670 回答
3

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

于 2018-09-18T15:13:57.650 回答
1

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++

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

于 2019-12-20T03:07:12.803 回答