2017-07-12 15 views
0

のdimメンバーにdimという名前のメンバーがありません。をハロゲンリポジトリからインライン宣言からジェネレーターに変換しようとしています。すべてがこれ以外は正常に動作するようです:元のコードでHalide :: GeneratorInput <Halide :: Func>

Func clamped = BoundaryConditions::repeat_edge(input);` 

inputはそうImageParam input(Float(32), 3)のように宣言されています。私の発電機では、これをInput<Func> input { "input", Float(32), 3 }に翻訳しました。私は元のコードとまったく同じ方法でclampedを宣言しています。

Halide.h:15202:50: error: no member named 'dim' in 'Halide::GeneratorInput<Halide::Func>' 
    object_bounds.push_back({ Expr(func_like.dim(i).min()), Expr(func_like.dim(i).extent()) }); 
            ~~~~~~~~~^

Input<Func>BoundaryConditions::repeat_edgeを作成する方法はあります:コンパイルすると、私はこのエラーを取得していますか?

答えて

1

そこには、バッファ<>が関連付けられています。 (たぶんあなたの場合はバッファ、それを試してみてください)。

struct MyGen : Generator<MyGen> { 
    Input<Buffer<>> dim_only_input_buffer{ "dim_only_input_buffer", 3 }; 
    ... 
    }; 

は、私はあなたがこのgithub issue

にこれについての詳細を見ることができ、似たように走りました
1

アイデアInput<Func>は、ジェネレータを一緒に合成するときに別のFuncでインスタンス化することができるということです。 (例えば、1つの発電機の出力は別の発電機への入力であり、接続されたすべての発電機のグラフは単一のハライドプログラムとしてコンパイルされる)。FuncsBuffersのように固定の境界を持たない。したがって、Funcの幅を(例えば)求めることはできません。

コンクリートメモリで常に使用するように設計されたジェネレータでは、Inputを使用できます。 Inputに境界条件を課すには、境界を明示的なパラメータとしてジェネレータに渡す必要があります。例えば。他としてInputs

関連する問題