我正在用OpenCL编写一个小程序,并调用:
err = clBuildProgram(program, 0, NULL, NULL, NULL, NULL);
printf("%d\n", err);
打印 -11 或 CL_BUILD_PROGRAM_FAILURE 。
我已添加此代码以调试错误:
if (err != CL_SUCCESS) {
char *buff_erro;
cl_int errcode;
size_t build_log_len;
errcode = clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, 0, NULL, &build_log_len);
if (errcode) {
printf("clGetProgramBuildInfo failed at line %d\n", __LINE__);
exit(-1);
}
buff_erro = malloc(build_log_len);
if (!buff_erro) {
printf("malloc failed at line %d\n", __LINE__);
exit(-2);
}
errcode = clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, build_log_len, buff_erro, NULL);
if (errcode) {
printf("clGetProgramBuildInfo failed at line %d\n", __LINE__);
exit(-3);
}
fprintf(stderr,"Build log: \n%s\n", buff_erro); //Be careful with the fprint
free(buff_erro);
fprintf(stderr,"clBuildProgram failed\n");
exit(EXIT_FAILURE);
}
打印:
构建日志:错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:359:10:' stddef.h' 找不到文件错误:/usr/include/CL/cl_platform.h:405:18: ' xmmintrin.h'找不到文件错误: /usr/include/CL/cl_platform.h:405:18:' xmmintrin.h'找不到文件
clBuildProgram失败
我使用的是Windows 10 / Cygwin,安装了gcc-core,opencl和opencl-devel。我在 /usr/lib/gcc/x86_64-pc-cygwin/5.4.0/include 中有 stddef.h 和 xmmintrin.h 。我试图在 / usr / include 中cp
,但没有运气。
如果我添加:
#include <stddef.h>
#include <xmmintrin.h>
到我的程序,它编译好了。
我在这里遗漏了什么吗?我应该补充一点,我不是Cygwin的有经验的用户。