2012-09-03 2 views
4

OpenCL에서 디버깅을 위해 수동으로 예외를 던질 수 있습니까? 내 코드에서 아주 이상한 오류가 발생했습니다 : 두 개의 이중 값을 계산하여이를 더하면 호스트는 "CL_OUT_OF_RESOURCE"를보고합니다. 그러나이 두 값을 추가하지 않으면 호스트에서 오류를보고하지 않습니다.OpenCL : 수동으로 커널에 예외를 던지십시오.

+2

커널 내부에는 예외 나 try/catch 블록을 쓸 수 없습니다. CL_OUT_OF_RESOURCE는 여러 가지 이유로 인해 발생할 수 있습니다. 호스트와 커널 코드를 게시 할 수 있습니까? AMD, Intel, NVIDIA 등 하드웨어 구성에 대해서도 알려주십시오. – kiranputtur

+0

@ocluser 귀하의 도움에 감사드립니다. 그러나 제가 작업하고있는 코드는 아직 발표 된 논문의 알고리즘을 기반으로합니다. 나는 그 논문이 출판되기 전까지 아무 것도 공개 할 수 없다. NVIDIA 플랫폼 (GTX460M)에서 AMD 플랫폼 (Radeon HD5850)으로 전환 한 후에 문제가 사라진 것 같습니다. – aaronqli

답변

1

예외는 OpenCL에서 지원되지 않습니다. 이는 C99 언어를 기반으로합니다.

AMD GPU에서는 printf을 커널 내부에 사용할 수 있습니다 (cl_amd_printf 확장 참조). 이것을 사용하려면 .cl 파일의 맨 위에 넣으십시오.

+1

Intel OpenCL SDK는 기본적으로 printf를 지원합니다. – aaronqli

+0

@Polymorpher 이는 Intel CPU OpenCL 장치에만 해당됩니다. 'printf'는 SDK를 통하지 않고 컴파일러에서 (드라이버를 통해) 제공됩니다. 사용중인 SDK는 중요하지 않습니다. 중요한 장치 (및 드라이버)입니다. –

관련 문제