2015-01-20 4 views
1

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

Edit 1:

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

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

Edit 2:

Хорошо, я поставил HL_DEBUG_CODEGEN = 1 к переменной окр и установить в коде set_target (Target :: Debug). Я получил кучу кода на экране, некоторые из которых были OpenCL-кодом, но я до сих пор не вижу никакого чистого кода ядра.

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

OpenCL kernel: /*OpenCL C*/

Тогда есть строка:

kernel void _at_least_one_kernel(int x) { }

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

gradient(x, y) = x + y;

ли функция внутри ядра если я хочу нацелиться на 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» для создания исходного файла c из кода Halide. Я хотел бы получить какой-то похожий файл или вывод, чтобы узнать, что делает код Opencl Halide. Или узнать, возможно ли это. – jussijii

+0

Проверьте обновленный ответ, существует также метод 'compile_to', который может быть более подходящим для вас – deimus

 Смежные вопросы

  • Нет связанных вопросов^_^