Python — Изменение макета галогенидного буфера вывода

Я пытаюсь изменить расположение буфера реализации.
Я понимаю, что цель Halide — дать возможность определить алгоритм «один раз», а затем иметь возможность изменять такие вещи, как расписание и расположение хранилища по отдельности.

я пытался my_output_function.reorder_storage(x,y,c) (и переставляя x,y,c); тем не менее, для любого порядка хранения шаги реализации буфера остаются неизменными (то есть компоновка не изменяется).

Если я меняю порядок измерений при звонке my_output_function.realize(width, height, channels), то код не компилируется, так как некоторые граничные условия нарушаются. Я должен был бы изменить определение алгоритма, побеждая цель галида.

Что я должен сделать, чтобы изменить формат вывода?
Почему reorder_storage не влияет на вывод?

Спасибо за вашу помощь.

1

Решение

Порядок вывода определяется не reorder_storage (что мы, вероятно, должны отключить или предупредить о выходных функциях), но по расположению выходного буфера, как указано его шагами. Вы не можете контролировать это, используя простейшие Func::realize методы, которые принимают аргументы измерения и возвращают выделенную систему Image, но вы можете в заранее скомпилированном интерфейсе или с другими методами реализации, которые принимают структуры, выделенные пользователем:

http://halide-lang.org/docs/class_halide_1_1_func.html#a1f749d8761a6cf35a6f2f3c319d66729

В частности, если вы строите Bufferи измените stride поля его raw_buffer:

http://halide-lang.org/docs/structbuffer__t.html#af60461463c076afe9dd5909e6daf4536

Обмен шагами изменяет подразумеваемое чередование хранилища этого выходного буфера.

В общем, это не так хорошо раскрывается через JIT API (realizeи т. д.) в соответствии с соглашением о вызовах AOT (передача вручную buffer_tс). Мы могли бы добавить, например, set_stride методы на Buffer/Image/так далее. Чтобы узнать больше о модели AOT, ознакомьтесь с уроком 10:

https://github.com/halide/Halide/blob/master/tutorial/lesson_10_aot_compilation_generate.cpp
https://github.com/halide/Halide/blob/master/tutorial/lesson_10_aot_compilation_run.cpp

Надеюсь, это поможет. Кроме того, не стесняйтесь спрашивать на список рассылки, который очень активен.

2

Другие решения


По вопросам рекламы [email protected]