有没有一种独立于操作系统的方法可以将OpenCL内核转换为SPIR-V



我找到了一份关于使用clang的开源工具将OpenCL内核离线编译到SPIR-V的指南,但我找不到其他编译器的官方方法。

有没有一种方法可以使用CMake将OpenCL内核转换为SPIR-V?如果没有,除了在不同的操作系统上编写自定义脚本和调用clang(我对Linux和Windows特别感兴趣(之外,还有其他通用的方法来构建相同的包含OpenCL的项目吗?

我看到SPIR-V是为OpenCL 2.0+设计的,但NVidia显卡只支持OpenCL 1.2-。包含SPIR-V模块的应用程序会在NVidia图形卡上工作吗?

,但我找不到其他编译器的官方方法。

因为没有任何官方方式。大多数实现甚至不允许您以独立/离线的方式运行它们的编译器。有Clang,IIRC英特尔确实有一个离线的OpenCL编译器;我不知道还有其他人。

除了在不同的操作系统上编写自定义脚本和调用clang之外,是否还有另一种通用的方法来构建相同的包含OpenCL的项目

取决于你所说的";建筑物";。几乎在任何地方都能工作的唯一方法是将OpenCL源代码与程序一起分发,并在运行时调用clBuildProgram((。如果这对你不好,那么你有两个选择,1(混淆CL源,2(分发二进制文件。对于2(,没有一种官方的二进制格式可以在任何地方使用。SPIR-V非常接近,但自OpenCL 2.1以来,它的支持只是强制性的。

包含SPIR-V模块的应用程序会在NVidia显卡上工作吗?

否。您可以使用";"官方方式";,通过在clBuildProgram((之后调用clGetProgramInfo((

最新更新