When I use clBuildProgram
in my OpenCl code it fails with the error code -11 without any log information.
Here is what my code looks like:
ret = clBuildProgram(program, 1, &device_id, NULL, NULL, NULL);
if (ret != CL_SUCCESS)
{
size_t len;
char buffer[2048];
cl_build_status bldstatus;
printf("\nError %d: Failed to build program executable [ %s ]\n",ret,get_error_string(ret));
ret = clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_STATUS, sizeof(bldstatus), (void *)&bldstatus, &len);
printf("Build Status %d: %s\n",ret,get_error_string(ret));
printf("INFO: %s\n", get_error_string(bldstatus));
ret = clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_OPTIONS, sizeof(buffer), buffer, &len);
printf("Build Options %d: %s\n",ret,get_error_string(ret));
printf("INFO: %s\n", buffer);
ret = clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, sizeof(buffer), buffer, &len);
printf("Build Log %d: %s\n",ret,get_error_string(ret));
printf("%s\n", buffer);
(void)infoinfo(platform_id,device_id);
exit(1);
}
Here is what the output looks like:
Error -11: Failed to build program executable [ CL_BUILD_PROGRAM_FAILURE ]
Build Status 0: CL_SUCCESS
INFO: CL_DEVICE_NOT_AVAILABLE
Build Options 0: CL_SUCCESS
INFO:
Build Log -30: CL_INVALID_VALUE
CL_PLATFORM_NAME : NVIDIA CUDA
CL_PLATFORM_VERSION : OpenCL 1.1 CUDA 4.2.1
Device name : Tesla K20m
Driver version : 319.32
Global Memory (MB) : 4799
Global Memory Cache (KB) : 208
Local Memory (KB) : 48
Max clock (MHz) : 705
Max Work Group Size : 1024
Number of parallel compute cores : 13
Is the device available : yes
So, just by chance can you guys see any mistake or something weird in the lines above ?
Thank you,
Éric.
It looks like you might be using clGetProgramBuildInfo() wrong. The first time it is called, it should should be telling the size of the buffer it needs on the host:
clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, NULL, NULL, &len);
then on the host allocate the memory:
char *log = new char[len] //or whatever you use
then recall clGetProgramBuildInfo():
clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, len, log, null);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With