【问题标题】:OpenCL Ndrange Global Size/Local SizeOpenCL Ndrange 全局大小/局部大小
【发布时间】:2013-11-10 08:34:07
【问题描述】:

我正在尝试使用霍夫变换检测二进制图像中的圆。 NDrangekernel 中本地和全局工作大小的问题我不知道所需的优化值 global_work_size 放维度过程图像的值,如 512*512 local_work_size 当输入值 1 或 8 或 16 时,程序运行正常 但是当将值更改为 32 或 64 时,编译正常,程序在执行时间上运行得更快,但没有导致累加器 in[] 的输出

图片尺寸512*512
size_t szGlobalWorkSize[2]={img.cols,img.rows}; size_t szLocalWorkSize[2]={16,16};

     clEnqueueNDRangeKernel(clCommandQueue,hough_circle,2,NULL,szGlobalWorkSize,szLoc‌alWorkSize,0,NULL,&event);​ 

内核代码是:

 kernel void hough_circle(read_only image2d_t imageIn, global int* in,const int w_hough)
{
       sampler_t sampler=CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE |         CLK_FILTER_NEAREST;
      int gid0 = get_global_id(0);
      int gid1 = get_global_id(1);
     uint4 pixel;
      pixel=read_imageui(imageIn,sampler,(int2)(gid0,gid1));
     if(pixel.x==255)
     {
   for(int r=90;r<110;r+=1)
        {
           for(int theta=0; theta<360;theta++)
              {
        x0=(int) round(gid0-r*sin_parameter[theta] );
        y0=(int) round(gid1-r*cos_parameter[theta] );
                if((x0>0) && (x0<get_global_size(0)) && (y0>0)&&(y0<get_global_size(1)))

                 atom_inc(&in[w_hough*y0+x0]);
               }
         }

     }

}

任何帮助选择全局和局部大小的最佳值

【问题讨论】:

    标签: size opencl global local


    【解决方案1】:

    两件事:

    1. 您不能使 local_work_size 任意大。 CL_DEVICE_MAX_WORK_ITEM_SIZES 的每个维度必须小于等于 clGetDeviceInfo,CL_DEVICE_MAX_WORK_GROUP_SIZE 的所有维度的乘积必须小于等于 clGetDeviceInfo。对于某些 GPU,这是 128,因此 16x16 对于某些硬件来说甚至太大了。 32x32 不适用于大多数 GPU。

    2. 如果您指定 local_work_size,则 global_work_size 必须是 local_work_size 的整数倍(如果您使用的是 OpenCL 1.x)。

    【讨论】:

    • 谢谢 CL_DEVICE_MAX_WORK_ITEM_SIZES: 256 256 256 CL_DEVICE_MAX_WORK_GROUP_SIZE: 256 如果我可以问一个问题,本地工作大小 16 * 16 或 64 * 4 之间有什么区别
    • 不是特别多,但这取决于您的数据布局。如果您正在阅读图像,16x16 可能会获得更好的局部性和纹理缓存;但是,如果您正在读取缓冲区,则 64x4(或运行 256 个项目的一维内核)可能会更好。
    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 2010-10-27
    相关资源
    最近更新 更多