clBuildProgram
을 OpenCl 코드에 사용하면 로그 정보없이 오류 코드 -11과 함께 실패합니다.opencl 커널 빌드 실패
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
그래서, 그냥 우연히 너희들은 어떤 실수 나 이상한 것을 볼 수 있습니다
다음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);
}
같이 출력이 모습입니다 : 여기
내 코드는 모습입니다 위의 줄?감사합니다.
Éric.
누군가가 당신에게 거짓말을한다. 'get_error_string (bldstatus)'가 말했듯이, infoinfo funktion이 알려주거나 사용할 수 없기 때문에 장치를 사용할 수 있습니까? 좀 더 코드? –
'clGetProgramBuildInfo' 또는'get_error_string' 서브 루틴에서 사용하는 에러 코드 정의를 호출하는 방법 중 하나라고 생각합니다. 사실,'get_error_string' 서브 루틴은 OpenCl 에러 코드에 해당하는 문자열을 반환합니다. 이 코드는 cl_build_status 코드와 일치하지 않을 수 있습니다! – Eric