Halide Tuple用法

时间:2014-08-13 20:23:47

标签: c++ computer-vision halide

我想使用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文件。

1 个答案:

答案 0 :(得分:3)

目前,所有输出(实现的元素)必须具有相同数量的维,分和范围。只有元素的类型可以变化。安德鲁有计划取消这项​​限制,但我不会在6到9个月之内完全依赖它。