clGetProgramBuildInfo 返回 CL_BUILD_NONE 尽管程序给出了正确的输出

问题描述

我正在测试一个来自 Nvidia 的 opencl 代码示例的简单向量添加程序。它给出了正确的向量相加结果。只是为了实验,我试图通过在调用 clBuildProgram 后添加以下行来查看程序构建状态和构建日志:

size_t size = 0;
ret=clGetProgramBuildInfo(program,device_id,CL_PROGRAM_BUILD_STATUS,NULL,&size);

cl_build_status *status=(cl_build_status *)malloc(sizeof(cl_build_status));
clGetProgramBuildInfo(program,size,status,NULL);
printf("\nBuild status=%d\n",*status); 

ret = clGetProgramBuildInfo(program,CL_PROGRAM_BUILD_LOG,&size);
char *buildlog=(char*)malloc(size);
buildlog[size] = '\n';
ret = clGetProgramBuildInfo(program,buildlog,NULL);
printf("\n\nBuildlog:   %s\n\n",buildlog);

状态返回“0”,这意味着 CL_BUILD_NONE 并且构建日志不打印任何内容(可能返回一个空字符串)

根据 opencl 文档,当没有对设备的指定程序对象执行构建时,将返回 CL_BUILD_NONE。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)