可以指定OpenCL的Clang版本吗?

Can the Clang version of OpenCL be specified?

我最初为 AMD GPU (RX 570) 编写的 OpenCL 程序在 Nvidia 卡(RTX 3060,最新驱动程序)上的运行时编译失败,并显示消息 <kernel>:28:5: error: use of unknown builtin '__builtin_mul_overflow'

通过预处理器宏,我发现 OpenCL 代码现在可以使用 Clang 3.4 进行编译。根据文档,这个版本还不支持在 Clang 3.8 中引入的__builtin_mul_overflow()

是否可以指定 OpenCL 使用较新的 Clang 版本? 还是最新的 Nvidia 驱动程序确实仅限于这么旧的编译器?

遗憾的是,您无法控制 OpenCL 驱动程序使用哪个编译器。您可以尝试有条件地编译代码以说明不同的编译器,但仅此而已。