Я пытаюсь использовать Halide для вычисления трафарета, который является частью кода на C++. Я использую буферы, которые указывают на мои структуры данных, которые были определены в C++. Я хочу, чтобы время выполнения моего кода, поэтому я пытаюсь использовать компиляцию AOT, чтобы я мог время просто выполнить, а не время компиляции. Итак, есть ли способ использовать Буферы при объявлении вектора типа Argument для входов при использовании компиляции AOT? Если нет, есть ли другой способ просто выполнить выполнение при использовании Halide?Halide AOT компиляция
ответ
Вы можете использовать Буферы в AOT скомпилированном коде. Если вы поместите их в вектор Аргумент, они станут аргументами для сгенерированной функции. Если вы их оставите, то они будут внедрены в сгенерированный объектный файл в виде постоянных массивов. Вот учебник по AOT компиляции:
http://halide-lang.org/tutorials/tutorial_lesson_10_aot_compilation_generate.html http://halide-lang.org/tutorials/tutorial_lesson_10_aot_compilation_run.html
«compile_jit» метод может быть вызван на трубопроводе, чтобы вызвать компиляции произойдет. Тот же Func может быть вызван через методы «реализовать» или «оценить» и приурочен. Это отделяет время выполнения от времени компиляции при использовании JIT. Вероятно, AOT предпочтительнее, если вы собираетесь использовать его в своем приложении, но техника compile_jit полезна при работе с JIT для тестов или простых тестов.
(Есть несколько других проблем с отделением переноса буфера хоста/графического процессора из циклов синхронизации, а также обеспечение выполнения графического процессора не асинхронным относительно циклов синхронизации. Покрытие это немного более активно, и я не думаю, что это актуально здесь.)
Я следую этому учебнику. Мне интересно, если я использую Buffers как Arguments для компиляции AOT, как я могу указать размер? Когда я использую реализацию, я передаю размер, над которым буду работать, и когда используются входные буферы (например, в учебнике), вы устанавливаете размер. Как это работает с буферами для кода AOT? Спасибо, Андрей –