2015-01-20 3 views
1

Halide에서 생성 된 OpenCL 코드가 포함 된 파일을 생성 할 수 있습니까? Halide 프로그램에서 c 파일을 만들려고했는데 opencl이라는 타겟이 있었지만 openc의 특정 코드는 보이지 않습니다.Halide : OpenCL 코드 생성

편집 1 :

나는 커널은 할로겐에서 만든 특히 어떻게보고 싶습니다. 이런 식으로 뭔가 :

static char kernelSourceCode[] = kernel void test_kernel(int a, int b, __global int *out) { out[0] = a + b; }

편집 2 :

좋아, 내가 ENV 변수에 HL_DEBUG_CODEGEN = 1을 넣어 코드 set_target (대상 : 디버그)에서 설정합니다. 일부 코드는 OpenCL 코드 였지만 여전히 커널 특수 코드는 볼 수없는 코드가 화면에 나타납니다.

커널에 관한 두 줄이 화면에 표시됩니다. 뭔가 있을까요? 나는이 같은 기능이 예에서

kernel void _at_least_one_kernel(int x) { }

:

gradient(x, y) = x + y;

커널 내부의 함수이다

OpenCL kernel: /*OpenCL C*/

은 다음 또한 라인이 내가 OpenCL을 목표로하고 싶다면? 여기

답변

1

내가 기본적으로 사용할 수 없습니다 documentation

CUDA 나 OpenCL을에서 발견하는 관리되는 것입니다. Target 객체를 생성하고 그 중 하나를 활성화 한 다음 해당 대상 객체를 compile_jit에 전달해야합니다.

Target target = get_host_target(); 
target.set_feature(Target::OpenCL); 
curved.compile_jit(target); 

또는 similarely 올바른 목표를 제공함으로써, compile_to 방법을 사용할 수 있습니다.

EXPORT void Halide::Func::compile_to(const Outputs & output_files, 
            std::vector<Argument> args, 
            const std::string& fn_name, 
            const Target& target = get_target_from_environment() 
) 
+0

"compile_to_c"함수를 사용하여 Halide 코드에서 C 소스 파일을 생성합니다. Halide가 만든 opencl 코드를보기 위해 어떻게 든 비슷한 파일이나 출력을 얻고 싶습니다. 또는 그것이 가능한지 아는 것. – jussijii

+0

업데이트 된 답변을 확인하십시오. 더 적합한'compile_to' 메소드가 있습니다. – deimus