Я хочу использовать 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), а не несколько объектных файлов.
сойка
В настоящее время все выходные данные (элементы реализации) должны иметь одинаковое количество измерений, минут и экстентов. Только тип элементов может меняться. У Эндрю есть план по снятию этого ограничения, но я не буду зависеть от него в течение шести-девяти месяцев.