문제

Snow Leopard에서 OpenCL 코드를 개발하고 있으며 OpenCL Just-In-Time 편집은 Clang/LLVM에 의해 수행된다는 것을 이해합니다. C 전 처리기가 전혀 사용됩니까? 컴파일러로 전처리 정의를 설정하는 방법이 있습니까? 어떤 정의가 존재합니까?

코드가 CPU 또는 GPU에 대해 컴파일되어 있는지 여부를 알고 싶습니다. 예를 들어 디버깅을 위해 printf 문을 사용할 수 있습니다.

도움이 되었습니까?

해결책

그만큼 clBuildProgram API는 컴파일러 인수를 가져옵니다 ( const char * options 매개 변수).

-D MYMACRO 이해됩니다 -D MYMACRO=value.

미리 정의 된 매크로에 대해서는 전체 목록 (섹션 6.9)에 대한 OpenCL 사양을 참조하십시오. 철저한 목록 :

  • __FILE__
  • __LINE__
  • __OPENCL_VERSION__

다른 팁

OpenCL "Preprocessor"를 사용하여 정의를 정의 할 수도 있습니다 (C : C :).

#define dot3(x1, y1, z1, x2, y2, z2) ((x1)*(x2) + (y1)*(y2) + (z1)*(z2))

(괄호 안에 주목하십시오. 변수에 표현식을 삽입 할 수 있고 표현식이 올바르게 평가 될 수 있기 때문에 중요합니다).

이를 통해 응용 프로그램 속도를 향상시키는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top