为什么调用clEnqueueTask 3次会导致任务被执行10次?

时间:2014-09-23 14:14:27

标签: opencl

我在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

为什么?

0 个答案:

没有答案