1

我想使用 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),而不是多个目标文件。

周杰伦

4

1 回答 1

3

目前,所有输出(实现的元素)必须具有相同数量的维度、最小值和范围。只有元素的类型可以变化。安德鲁有一个取消这个限制的计划,但我不会在不到六到九个月的时间内依赖它。

于 2014-08-13T20:30:23.747 回答