我想使用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),而不是多个Object文件。
杰
答案 0 :(得分:3)
目前,所有输出(实现的元素)必须具有相同数量的维,分和范围。只有元素的类型可以变化。安德鲁有计划取消这项限制,但我不会在6到9个月之内完全依赖它。