我在OpenCL中创建了一个简单的内核:
__kernel void test(int x){
printf("test\n");
};
我在一个非常简单的程序中调用它:
int main(){
cl_int err;
cl_int i = 0;
cl_kernel testKernel;
CL cl = initCL(1,(const char*[2]){"kernel.c"});
testKernel = clCreateKernel(cl.program, "test", &err);
clSetKernelArg(testKernel, 0, sizeof(cl_int), &i);
clEnqueueTask(cl.queue,testKernel,0,NULL,NULL);
clEnqueueTask(cl.queue,testKernel,0,NULL,NULL);
clEnqueueTask(cl.queue,testKernel,0,NULL,NULL);
clFinish(cl.queue);
return 0;
};
我期待"测试"要打印3次,而是该程序的输出是:
test
test
test
test
test
test
test
test
test
test
为什么?