Kernel OpenCL内核构建错误

Kernel OpenCL内核构建错误,kernel,opencl,Kernel,Opencl,我在使用Xcode处理OpenCL时遇到了一些问题。 要处理该项目,应找到网格中从一个点到另一个点的最短路径。由于我不熟悉内核编程,我需要有人帮助我找出代码中的错误。 内核是一个双向bfs 功能 ret = clBuildProgram(program, 1, &device_id, NULL, NULL, NULL); 将错误-11返回到ret(当下面的行被唯一注释禁用时有效) 这是双向BFS的核心 __kernel void BFS(__global int *dist,__glo

我在使用Xcode处理OpenCL时遇到了一些问题。 要处理该项目,应找到网格中从一个点到另一个点的最短路径。由于我不熟悉内核编程,我需要有人帮助我找出代码中的错误。 内核是一个双向bfs

功能

ret = clBuildProgram(program, 1, &device_id, NULL, NULL, NULL);
将错误-11返回到ret(当下面的行被唯一注释禁用时有效)

这是双向BFS的核心

__kernel void BFS(__global int *dist,__global bool *blocked,__global char *visited,__global int2 *startpt,int N,int M,__global int* debug_arr){

    int i=get_global_id(0),queue[N*M],qr=0,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},s,d;
    debug_arr[i]=i+1;



    int px=startpt[i].x,py=startpt[i].y;



    queue[qr++]=px*M+py;

    for(s=0;s<qr ;++s){
        px=queue[s]/M,py=queue[s]%M;
        for(d=0;d<4 ;++d){
            int nx=px+dx[d],ny=py+dy[d];
            if(nx<0||nx>N||ny<0||ny>M||blocked[nx*M+ny]||visited[nx*M+ny]==visited[px*M+py])continue;
            if(visited[nx*M+ny]==0 && visited[nx*M+ny]!=visited[px*M+py]){
                dist[nx*M+ny]=dist[px*M+py]+1;
                visited[nx*M+ny]=visited[px*M+py];
                //queue[qr++]=nx*M+ny;

            }

            else if(visited[nx*M+ny]!=visited[px*M+py]){
                debug_arr[i]=dist[nx*M+ny]+dist[px*M+py]+1;
            }
        }   
    }
}
\uuuuu内核无效BFS(\uuuu全局int*dist、\uuu全局bool*阻塞、\uu全局字符*已访问、\uu全局int2*startpt、int N、int M、\uu全局int*debug\arr){
int i=get_global_id(0),queue[N*M],qr=0,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},s,d;
调试_arr[i]=i+1;
intpx=startpt[i].x,py=startpt[i].y;
队列[qr++]=px*M+py;

对于(s=0;s,我建议使用
clGetProgramBuildInfo
[]API函数获取程序生成日志