當我在我的OpenCl代碼中使用clBuildProgram
時,失敗時顯示錯誤代碼-11,沒有任何日誌信息。構建opencl內核失敗
這裏是我的代碼如下所示:
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);
}
這裏是輸出的樣子:
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
所以,只是偶然你們可以看到任何錯誤或東西怪異上面的線?
謝謝,
Éric。
有人騙你。該設備是否可用,因爲您的infoinfo功能告訴您,或者它不可用,因爲'get_error_string(bldstatus)'說?更多的代碼? –
我認爲這可能是我調用'clGetProgramBuildInfo'或我在'get_error_string'子例程中使用的錯誤代碼定義。實際上,'get_error_string'子例程返回對應於OpenCl錯誤代碼的字符串。該代碼可能不對應於cl_build_status代碼! – Eric