0
如果我意外地在我的OpenCL内核中引用了一个不存在的函数,即使我修复了这个问题,编译器的行为就好像我没有。例如。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持有字面上没有代码,编译器仍然导致此错误。即使制作新文件并将内容复制到其中,或更改程序参数或名称也没有任何影响。我被这个bug困住了。重新启动计算机也不起作用。
编辑
我在MacBook Pro上,版本10.9
很简单,你并没有真正改变源代码。在将它发送给编译器之前检查字符串,并且您将看到发送给编译器的实际代码。 – DarkZeros
发送到编译器的代码是没有错误的更新代码。这可能有助于知道我正在使用JOCL来编译内核。 –
编译一个空的'.cl'文件并且编译器抱怨引用函数“f”的内核是不可能的。显然你仍然在编译旧的内核源代码。只需在编译之前转储发送给编译器的源代码即可。 – DarkZeros