OpenCL - 内核方法返回意外结果

时间:2018-01-30 21:48:46

标签: c++ opencl

我是OpenCL的初学者。我试着运行一个非常简单的内核代码,为vector的每个值加1。一切运行正常,没有返回错误代码(我在每一步后检查了返回值)。源代码:

2 
-16777216 
65535 
1 
-1242789408 
32767 
4201449 
0 
2 
0 

结果有些奇怪,而应该是{2,3,4,5,6,7,8,9,10,11}:

__kernel void hello(__global int* a, __global int* b)
{
    int sam = 0;
    int gid = get_global_id(0);
    b[gid] = sam + a[gid] +1 ;
}

我的内核:

                Managers.AddParameters("@Manager_Username", 
                TXTUsername.Text.ToString)
                Managers.AddParameters("@Manager_Password", 
                TXTPassword.Text.ToString)
                Managers.MakeQuery("SELECT Manager_Username, 
                Manager_Password, 
                Manager_ID, Manager_Name FROM SaleManager WHERE 
                Manager_Username = @Manager_Username 
                AND Manager_Password = @Manager_Password")

有人可以解释原因吗?它突然爆发了几个小时!

1 个答案:

答案 0 :(得分:3)

clEnqueueTask相当于调用clEnqueueNDRangeKernel work_dim = 1global_work_offset = NULLglobal_work_size[0]设置为1local_work_size[0]设置到1

所以请使用clEnqueueNDRangeKernel