2013-08-05 5 views
2

많은 opencl 커널을 호출하는 라이브러리를 구축했습니다. 모든 커널은 다음과 같은 패스 :clEnqueueNDRangeKernel을 호출 할 때 CL_INVALID_PROGRAM_EXECUTABLE 오류가 발생했습니다.

-oclLoadProgSource 
-clCreateProgramWithSource 
-clBuildProgram 
-clCreateKernel 

내가 clEnqueueNDRangeKernel를 사용하는 커널 중 하나를 시작하면 문제는, 나는 다음과 같은 오류 얻을 :

  • (5) 기타 : 난 그 CL_INVALID_PROGRAM_EXECUTABLE

    을 알고 커널은 이전에 성공적으로 시작되었습니다.

  • (라이브러리가 아닌) 소스 코드를 직접 사용할 때 이러한 문제가 전혀 발생하지 않으며 모든 것이 잘 동작합니다.
+0

어떤 라이브러리가 있습니까? 커널 컴파일의 각 단계에 전달한 인수는 무엇입니까? 커널 코드는 무엇입니까? 이 정보가 없으면 전혀 도움이되지 않습니다. – DarkZeros

+0

첫째로, 나의 영어를 위해 유감스럽게 생각해, 어쩌면 나가 의미 한 무엇을 명확하지 않다. 여러 커널을 만들고 점심을 먹는 코드가 있습니다. 다음 코드 중 하나를 사용하십시오. 1- 직접 소스 코드를 사용하십시오. 2 소스 코드를 lib 파일로 변환하여이 lib 파일을 사용하십시오. 내가 도서관에서 의미했던 것. 커널 컴파일을 위해 다음 옵션을 사용합니다 : "-cl-opt-disable" 커널 코드를 제공 할 수는 없지만, 소스 코드 direclty를 사용할 때 제대로 작동하고 있음을 나타내는 것으로 충분합니다 내 내장 라이브러리를 통해. –

+0

플랫폼이 무엇입니까? 소스 코드를 어떻게 lib 파일로 변환합니까? –

답변

2

clBuildProgram이 반환하는 상태를 테스트해야합니다. 실패하면 clGetProgramBuildInfo (..., CL_PROGRAM_BUILD_LOG, ...)으로 컴파일러 진단을 가져옵니다.

관련 문제