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 );

出力 0 と出力 1 の違いについて、Halide からエラーが発生しました。

複数のオブジェクト ファイルではなく、1 つのコンパイル (compile_to_file) のみが必要であると想定しています。

ジェイ

4

1 に答える 1

3

現在、すべての出力 (Realization の要素) は、同じ数の次元、最小値、および範囲を持っている必要があります。要素のタイプのみを変更できます。Andrew はこの制限を撤廃する計画を持っていますが、私は 6 か月から 9 か月以内であれば、それに依存するつもりはありません。

于 2014-08-13T20:30:23.747 に答える