如果我意外地在我的OpenCL内核中引用了一个不存在的函数,即使我修复了问题,编译器的行为也好像我没有。例如。
__kernel void doSomething(__global unsigned int *array){
f(array)
}
显然f不存在,我会收到错误。但是,如果我编写f方法,编译器会继续发出此错误。
Exception in thread "main" org.jocl.CLException: CL_BUILD_PROGRAM_FAILURE
Build log for device 0:
kernel referenced an external function f, that could not be found.
无论我改变什么,我都可以删除任何内核的主体,以便.cl最终不包含代码,编译器仍然导致此错误。即使创建新文件并将内容复制到其中,或更改程序参数或名称也无效。我坚持这个错误。重新启动计算机也不起作用。
修改
我在MacBook Pro 10.9版上运行它
答案 0 :(得分:1)
我过去遇到过OpenCL缓存代码问题,这解决了我的问题。
// Setting this environment variable forces the OpenCL
// source code to be recompiled every time.
setenv("CUDA_CACHE_DISABLE", "1", 1);
当然,只有在您使用NVIDIA平台时,这才有意义。