GPU에서 Halide 코드를 실행하고 싶습니다. GPU에서 실행하는 방법과 크로스 컴파일을 수행하는 방법에 대한 자습서 예제가 있습니다. 그러나 크로스 컴파일과 GPU 실행을 결합한 튜토리얼은 없습니다.GPU 용 Halide 크로스 컴파일
크로스 컴파일 자습서의 방법과 동일한 방법으로 시도했습니다. 그러나 나는 표적의 구성을 확신하지 못한다.
target.os = Target::Windows;
target.arch = Target::X86;
target.bits = 64;
...
target.os = Target::Windows; // ???
target.arch = ??? ;
target.bits = 64;
std::vector<Target::Feature> gpu_features;
gpu_features.push_back(Target::OpenCL);
brighter.compile_to_file(...);
호스트 컴퓨터 OS가 Windows 인 동안 가상 컴퓨터에서 실행되는 Ubuntu에서 코드를 개발합니다. 그래서 GPU에서 실행하기 위해서는 크로스 컴파일 작업이 필요합니다.
지원 여부
그냥 명확히하기를 원한다. "using_the_gpu"튜토리얼의 예제를 만든다. curves.compile_to_file (...)으로'curved.compile_jit()'을 변경했습니다. 그래서, 그것은 커널 openCL 코드를 생성했습니다. 따라서이 경우 Halide가 자동으로 생성 한 GPU 커널 코드를 호출하는 데 필요한 CPU 코드 (copy_to_device() 및 copy_from_device() API 포함)가 있습니까? 내 Windows 프로젝트에서, 난 그냥 입력을 지정하고 생성 된 H 파일에서 함수를 호출해야합니다, 맞습니까? – aristg
예, Halide는 GPU에서 커널을 호출하기 위해 CPU 코드를 생성하고 적절한 입력 및 출력과 함께 단일 C/C++ 호출 가능 함수에 넣습니다. OpenCL 코드는 호출자 관점에서 생성 된 함수의 내부 세부 정보입니다. Halide 외부의 CPU에서 데이터에 액세스하기 전에 데이터가 호스트에서 유효한지 확인하려면 copy_from_device 호출을 만들어야합니다. (Halide 내부의 액세스는 자동으로 처리되어야합니다.) 이렇게하면 불필요한 호스트/장치 복사없이 여러 GPU 필터를 연속적으로 실행할 수 있습니다. –