OpenCL 컴파일러 전처리 정의?
-
20-09-2019 - |
문제
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))
(괄호 안에 주목하십시오. 변수에 표현식을 삽입 할 수 있고 표현식이 올바르게 평가 될 수 있기 때문에 중요합니다).
이를 통해 응용 프로그램 속도를 향상시키는 데 도움이됩니다.
제휴하지 않습니다 StackOverflow