我有以下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 ×1