Halide: генерация кода OpenCL

Возможно ли в Halide создать файл, содержащий сгенерированный код OpenCL? Я попытался создать файл c из программы Halide, целью которой был бы opencl, но я не вижу там никакого кода, специфичного для opencl.

Редактировать 1:

Особенно хотелось бы посмотреть, как создаются ядра в Halide. Что-то вроде этого:

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

Редактировать 2:

Хорошо, я поставил HL_DEBUG_CODEGEN=1 в переменную env и установил в коде set_target(Target::Debug). У меня на экране куча кода, некоторые из которых были кодом OpenCL, но я все еще не вижу кода, специфичного для ядра.

На экране есть две строки, которые указывают на наличие ядер. Должно быть что-то?

OpenCL kernel: /*OpenCL C*/

Потом еще есть строчка:

kernel void _at_least_one_kernel(int x) { }

Например, если у меня есть такая функция:

gradient(x, y) = x + y;

Является ли функция внутри ядра, если я хочу настроить таргетинг на OpenCL?


person jussijii    schedule 20.01.2015    source источник


Ответы (1)


Вот что мне удалось найти в документации.

CUDA или OpenCL не включены по умолчанию. Вы должны создать целевой объект, включить один из них, а затем передать этот целевой объект в compile_jit.

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

Или аналогичным образом вы можете использовать метод 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() 
)   
person deimus    schedule 20.01.2015
comment
Я использую функцию compile_to_c для создания исходного файла c из кода Halide. Я хотел бы получить какой-то похожий файл или вывод, чтобы увидеть, какой код opencl создает Halide. Или узнать, возможно ли это вообще. - person jussijii; 20.01.2015
comment
Проверьте обновленный ответ, есть также метод compile_to, который может вам больше подойти. - person deimus; 21.01.2015