如何解决是否有独立于操作系统的方法将 OpenCL 内核转换为 SPIR-V?
我为 clang
找到了关于 Offline Compilation of OpenCL Kernels into SPIR-V Using Open Source Tooling 的指南,但我找不到使用其他编译器执行此操作的官方方法。
有没有办法使用 CMake 将 OpenCL 内核转换为 SPIR-V?
如果不是,除了编写自定义脚本并在不同操作系统上调用 clang
(我对 Linux 和 Windows 尤其感兴趣)之外,是否还有另一种通用的方法来构建相同的包含 OpenCL 的项目?
我看到 SPIR-V 是为 OpenCL 2.0+ 设计的,但 NVidia 显卡仅支持 OpenCL 1.2-。包含 SPIR-V 模块的应用程序能否在 NVidia 显卡上运行?
解决方法
但我找不到使用其他编译器执行此操作的官方方法。
因为没有任何官方方法。大多数实现甚至不允许您以独立/离线方式运行他们的编译器。有 Clang,IIRC Intel 确实有一个离线 OpenCL 编译器;我不知道其他任何人。
除了在不同的操作系统上编写自定义脚本和调用 clang 之外,是否还有另一种通用的方法来构建相同的包含 OpenCL 的项目
取决于您所说的“构建”是什么意思。几乎在任何地方都有效的唯一方法是随程序一起分发 OpenCL 源代码,并在运行时调用 clBuildProgram()。如果这对您不利,那么您有两个选择,1) 混淆 CL 源,2) 分发二进制文件。对于 2),没有适用于任何地方的官方二进制格式。 SPIR-V 非常接近,但它的支持只是自 OpenCL 2.1 以来的强制性要求。
包含 SPIR-V 模块的应用程序是否可以在 NVidia 显卡上运行?
没有。您可以使用“官方方式”获取特定于 Nvidia 的二进制文件,方法是在 clBuildProgram() 之后调用 clGetProgramInfo()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。