Parallel processing OpenCL内核错误-11
我是OpenCL的新手,我正在尝试并行化一个边缘检测程序。我正在尝试从边缘检测函数编写一个内核。 原始功能: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
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];