这是我的 OpenCl 内核函数
private static String programSource =
"__kernel void "+
"sampleKernel(__local float *a,"+
" __local float *b,"+
" __global float *c,"+
" __global float *d)"+
"{"+
" int gid=get_local_id(0);"+
" c[gid]=a[gid]+b[gid];"+
" d[gid]=a[gid]-1;"+
"}";
clSetKernelArg(kernel, 0, Sizeof.cl_mem, Pointer.to(memObjects[0]));
clSetKernelArg(kernel, 1, Sizeof.cl_mem, Pointer.to(memObjects[1]));
clSetKernelArg(kernel, 2, Sizeof.cl_mem, Pointer.to(memObjects[2]));
clSetKernelArg(kernel, 3, Sizeof.cl_mem, Pointer.to(memObjects[3]));
我已经使用全局内存来存储数据。现在我尝试将存储位置转换为本地内存。所以我的代码如下所示:
private static String programSource =
"__kernel void "+
"sampleKernel(__local float *a,"+
" __local float *b,"+
" __global float *c,"+
" __global float *d)"+
"{"+
" int gid=get_local_id(0);"+
" c[gid]=a[gid]+b[gid];"+
" d[gid]=a[gid]-1;"+
"}";
clSetKernelArg(kernel, 0, Sizeof.cl_mem, NULL);
clSetKernelArg(kernel, 1, Sizeof.cl_mem, NULL);
clSetKernelArg(kernel, 2, Sizeof.cl_mem, Pointer.to(memObjects[2]));
clSetKernelArg(kernel, 3, Sizeof.cl_mem, Pointer.to(memObjects[3]));
当我执行上述代码时,出现以下语法错误:
NULL cannot be resolved to a variable.
谁能指出我的错误?
提前致谢!