小编use*_*258的帖子

使用float4时加速,opencl

我有以下opencl内核函数来获取图像的列总和.

__kernel void columnSum(__global float* src,__global float* dst,int srcCols,
                            int srcRows,int srcStep,int dstStep)   
{

    const int x = get_global_id(0);
    srcStep >>= 2;
    dstStep >>= 2;

    if (x < srcCols)
    {
        int srcIdx = x ;
        int dstIdx = x ;

        float sum = 0;

        for (int y = 0; y < srcRows; ++y)
        {
            sum += src[srcIdx];
            dst[dstIdx] = sum;
            srcIdx += srcStep;
            dstIdx += dstStep;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我指定每个线程在这里处理一个列,以便许多线程可以并行获取每列的column_sum.

我还使用float4重写上面的内核,这样每个线程一次可以从源图像中读取一行中的4个元素,如下所示.

__kernel void columnSum(__global float* src,__global float* dst,int srcCols,
                            int …
Run Code Online (Sandbox Code Playgroud)

opencl

4
推荐指数
1
解决办法
8570
查看次数

标签 统计

opencl ×1