我想在我的 OpenCL 内核中使用#include 语句,但似乎 Apple 的 OpenCL 编译器缓存了内核,因此如果您更改包含文件的内容而不是执行包含的文件,则程序在运行之间不会更改。
我编写了一个示例来说明这一点:http: //github.com/enjalot/adventures_in_opencl/tree/master/experiments/inc/
如果您编译并运行,它应该可以正常工作。然后,如果您注释掉 inc.cl 中的结构定义,它仍然可以正常运行(或更改 lvl2.cl 中的任何内容)
在 Ubuntu 上使用 NVIDIA 编译器可以获得预期的行为。
那么有没有办法强制 clBuildProgram 重新编译内核呢?