0

当我想在循环中使用计数器来生成值时,opencl 中的循环出现问题,似乎计数器值在迭代期间保持不变。我的 OpenCL 功能代码如下:

void my_loop( __global unsigned int* tab1, unsigned int* tab2){
  uint i, j;
  uint global_id_y = get_global_id(1);
  uint global_size_y = get_global_size(1);
  uint loop = global_size_y - global_id_y - 1
  uint length = get_global_size(0);

  for(i = 0; i < loop; i++){
      sidx = i * length; 
      for(j = 0; j < length; j++){
          tab2[sidx + j ] = i*10 + j;
      }
}

调用 clEnqueueNDRangeKernel 函数的代码

global_work_size[0] =  ncols; //ncols = 5
global_work_size[1] =  nbfrequents; //nbfrequents = 10

local_work_size[0] = ncols;
local_work_size[1] = nbfrequents;

clEnqueueNDRangeKernel(command_queue, kernel, 2, NULL, global_work_size, 
                                         local_work_size, 0, NULL, &event);

执行后,我得到的结果是这样的:

0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4 
...
0 1 2 3 4

正常吗?如何使用我的计数器的不同值?

4

0 回答 0