OpenCL错误:CL_INVALID_PROGRAM OpenCL错误:CL_INVALID_PROGRAM

时间:2018-09-01 12:43:47

标签: eclipse opencl ubuntu-16.04

ubuntu16.04 + eclipse + opencl + cuda; 我可以在Terminal中运行我的项目,一切正常,但是我需要更改代码并调试我的代码,因此我在eclipse中构建项目没有任何错误,但是当我调试或运行我的代码时,控制台显示以下错误:< / p>

Unable to open ../assets/cvc.cl. ../../src/oclUtil.cpp:445
Failed to create OpenCL program.../../src/CVC_cl.cpp:25
OpenCL error: CL_INVALID_PROGRAM
Failed to create OpenCL kernel. ../../src/CVC_cl.cpp:77

我的代码还可以,我可以在终端中运行。我不知道为什么,请帮助我。谢谢!

1 个答案:

答案 0 :(得分:0)

在构建文件时使用更多错误检查。

 // Build the program                                                                                                                                                                                                                                                                    
  ret = clBuildProgram(program, 1, &deviceId, NULL, NULL, NULL); RC_TEST2(ret, "clBuildProgram");                                                                                                                                                                                         

  if(ret != CL_SUCCESS){                                                                                                                                                                                                                                                                  
    size_t len = 0;                                                                                                                                                                                                                                                                       

    clGetProgramBuildInfo(program, deviceId, CL_PROGRAM_BUILD_LOG, 0, NULL, &len);                                                                                                                                                                                                        

    char *buffer = calloc(len, sizeof(char));                                                                                                                                                                                                                                             
    ret = clGetProgramBuildInfo(program, deviceId, CL_PROGRAM_BUILD_LOG, len, buffer, NULL);                                                                                                                                                                                              
    fprintf(stderr, "%s", buffer);                                                                                                                                                                                                                                                        
    exit(1);                                                                                                                                                                                                                                                                              
  }                 

但是在您的情况下,很明显cl文件的路径是错误的。因此编译器无法构建内核。相对路径出了点问题。如果您无法解决此问题,请尝试使用绝对路径。