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



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

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

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

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

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 #For OpenCL C++

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

最新更新