显示内核错误

时间:2013-08-14 13:18:28

标签: gcc opencl

我正在使用GCC和OpenCL的NVIDIA实现,以及在线编译而不是离线编译。

我使用this列表来检查我遇到的错误。但是,如果我的内核中有错误,我所拥有的唯一信息是错误值-48。

我的问题是:有没有办法显示确切的内核编译错误?

如果缺少分号,或者我有一个狂野的指针,我想这样读,而不是只有-48错误。否则开发时间会变得太慢。

我还添加了Makefile:

CC=gcc
FILE=main

all:
    $(CC) -c -Wall -I /usr/local/cuda/include/ $(FILE).c -o $(FILE).o
    $(CC) $(FILE).o -o $(FILE) -L /usr/local/cuda/lib64/ -l OpenCL
clean:
    $(RM) $(FILE) $(FILE).o

1 个答案:

答案 0 :(得分:0)

在C ++中,执行以下操作:

int ErrorCode = 0;
cl_program P;
cl_device_id D;
size_t LogSize;
cl_build_status BuildStatus;

//Configure OpenCL 
//Load Program Here
//Compile Program here

//Check the status of compilation
ErrorCode = clGetProgramBuildInfo(P, D, CL_PROGRAM_BUILD_STATUS, NULL, NULL, &BuildStatus);

if(BuildStatus == CL_BUILD_ERROR){
     //Fetch Error
     ErrorCode = clGetProgramBuildInfo(P, D, CL_PROGRAM_BUILD_LOG, NULL, NULL, &LogSize);
     char Log = new Log[LogSize]; //Or use Malloc if in C
     ErrorCode = clGetProgramBuildInfo(P, D, CL_PROGRAM_BUILD_LOG, LogSize, Log, NULL);

     //Display Error Code here, close out OpenCL, try again, etc
}