Parallel processing OpenCL内核错误-11

Parallel processing OpenCL内核错误-11,parallel-processing,opencl,Parallel Processing,Opencl,我是OpenCL的新手,我正在尝试并行化一个边缘检测程序。我正在尝试从边缘检测函数编写一个内核。 原始功能: void edgeDetection(float *out, float *in, int w, int h) { int r,c; for (r = 0; r < h-2; r++) { for (c = 0; c < w-2; c++) { float G; float* pOut = &am

我是OpenCL的新手,我正在尝试并行化一个边缘检测程序。我正在尝试从边缘检测函数编写一个内核。 原始功能:

void edgeDetection(float *out, float *in, int w, int h) {
    int r,c;
    for (r = 0; r < h-2; r++) {
        for (c = 0; c < w-2; c++) {
            float G;
            float* pOut = &out[r*w + c];
            float Gx = 0.0;
            float Gy = 0.0;

            int fr,fc;
            /* run the 2d-convolution filter */
            for (fr = 0; fr < 3; fr++) {
                for (fc = 0; fc < 3; fc++) {
                    float p = in[(r+fr)*w + (c+fc)];
                    /* X-directional edges */
                    Gx += p * F[fr*3 + fc];
                    /* Y-directional edges */
                    Gy += p * F[fc*3 + fr];
                }
            }
            /* all edges, pythagoral sum */
            G = sqrtf(Gx*Gx + Gy*Gy);
            *pOut = G;
        }
    }
}

我收到一个错误,上面写着“clBuildProgram失败(-11)”。从我的研究中,我发现通常认为这个错误是由语法错误引起的。然而,经过多次检查,我看不出我的内核有什么特别的问题。有人能帮我找出它的毛病吗?

代码中有很多错误:

(一)

这是无效的,应该是:

__global float* pOut = &out[r*w + c];
2) 您正在从未定义的内核中使用
F


3) CL中未定义
sqrtf
,您是指
sqrt
吗?

代码中有许多错误:

(一)

这是无效的,应该是:

__global float* pOut = &out[r*w + c];
2) 您正在从未定义的内核中使用
F

3) CL中未定义
sqrtf
,您是指
sqrt
吗?

与CL\u程序构建日志一起使用,以获取编译器日志,了解编译过程中出现的错误。这可能是一些愚蠢的错误。内核中是否定义了F?与CL_程序_构建_日志一起使用,以获取编译器日志,了解编译中出现的错误。这可能是一些愚蠢的错误。F是在内核中定义的吗?
float* pOut = &out[r*w + c];
__global float* pOut = &out[r*w + c];