Использование Halide Tuple

Я хочу использовать Halide для создания нескольких выходных буферов.

Func output;
std::vector<Expr> argsExpr( 4 );
argsExpr[ 0 ] = aOut( x, y );
argsExpr[ 1 ] = bOut( x, y );
argsExpr[ 2 ] = cOut( x, y );
argsExpr[ 3 ] = dOut( x, y );
output( x, y ) = Tuple( argsExpr );

Этот пример работает нормально, но мне было интересно, возможно ли иметь несколько выходных данных, но не одного размера, например:

std::vector<Expr> argsExpr( 4 );
argsExpr[ 0 ] = aOut( x, y, c );
argsExpr[ 1 ] = bOut( x, y );
argsExpr[ 2 ] = cOut( x, y );
argsExpr[ 3 ] = dOut( x, y );
output( x, y, ? ) = Tuple( argsExpr );

Я получил ошибку от Halide о разнице между выходом 0 и выходом 1.

Я предполагаю, что мне нужна только одна компиляция (compile_to_file), а не несколько объектных файлов.

сойка

1

Решение

В настоящее время все выходные данные (элементы реализации) должны иметь одинаковое количество измерений, минут и экстентов. Только тип элементов может меняться. У Эндрю есть план по снятию этого ограничения, но я не буду зависеть от него в течение шести-девяти месяцев.

3

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


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