clGetProgramBuildInfo returns CL_BUILD_NONE 虽然程序给出了正确的输出
clGetProgramBuildInfo returns CL_BUILD_NONE though the program gives correct output
我正在测试 Nvidia 的 opencl 代码示例中的一个简单的向量加法程序。它给出了正确的向量加法结果。只是为了实验,我试图通过在调用 clBuildProgram 后添加以下行来查看程序构建状态和构建日志:
size_t size = 0;
ret=clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_STATUS ,0,NULL,&size);
cl_build_status *status=(cl_build_status *)malloc(sizeof(cl_build_status));
clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_STATUS ,size,status,NULL);
printf("\nBuild status=%d\n",*status);
ret = clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_LOG ,0,NULL,&size);
char *buildlog=(char*)malloc(size);
buildlog[size] = '\n';
ret = clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_LOG ,size,buildlog,NULL);
printf("\n\nBuildlog: %s\n\n",buildlog);
状态 returns “0” 表示 CL_BUILD_NONE 并且构建日志不打印任何内容(可能 returns 一个空字符串)
根据 opencl 文档,当没有对设备的指定程序对象执行构建时,返回 CL_BUILD_NONE。
来自cl.h
header:
/* cl_build_status */
#define CL_BUILD_SUCCESS 0
#define CL_BUILD_NONE -1
#define CL_BUILD_ERROR -2
#define CL_BUILD_IN_PROGRESS -3
所以,你得到了正确的信息。
我正在测试 Nvidia 的 opencl 代码示例中的一个简单的向量加法程序。它给出了正确的向量加法结果。只是为了实验,我试图通过在调用 clBuildProgram 后添加以下行来查看程序构建状态和构建日志:
size_t size = 0;
ret=clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_STATUS ,0,NULL,&size);
cl_build_status *status=(cl_build_status *)malloc(sizeof(cl_build_status));
clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_STATUS ,size,status,NULL);
printf("\nBuild status=%d\n",*status);
ret = clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_LOG ,0,NULL,&size);
char *buildlog=(char*)malloc(size);
buildlog[size] = '\n';
ret = clGetProgramBuildInfo(program,device_id, CL_PROGRAM_BUILD_LOG ,size,buildlog,NULL);
printf("\n\nBuildlog: %s\n\n",buildlog);
状态 returns “0” 表示 CL_BUILD_NONE 并且构建日志不打印任何内容(可能 returns 一个空字符串)
根据 opencl 文档,当没有对设备的指定程序对象执行构建时,返回 CL_BUILD_NONE。
来自cl.h
header:
/* cl_build_status */
#define CL_BUILD_SUCCESS 0
#define CL_BUILD_NONE -1
#define CL_BUILD_ERROR -2
#define CL_BUILD_IN_PROGRESS -3
所以,你得到了正确的信息。