2017-04-04 9 views
0

Funcを静的ライブラリにコンパイルし、Cプログラムで使用しています。メッセージ:Output buffer f20 has type int32 but elem_size of the buffer passed in is 1 instead of 4が届いています。私はこの場合、私が間違っていることを理解できません。ここFuncです:出力バッファはint32型ですが、渡されるバッファのelem_sizeは4ではなく1です。

Var x, y, c; 
Func out; 
out(c, x, y) = cast<uint8_t>(255); 

私が正しく理解していれば、解決出力型はuint8_tをする必要があります。ここで私はCプログラムで、私のバッファを作成しています方法は次のとおりです。

buffer_t buffer; 

buffer.extent[0] = 4; 
buffer.extent[1] = width; 
buffer.extent[2] = height; 
buffer.elem_size = 1; 
buffer.host = data; 
buffer.stride[0] = 1; 
buffer.stride[1] = 4; 
buffer.stride[2] = stride; 

fill_buffer(&buffer); 

ので、私は、ハロゲン化物は8ビットとしてそれを使用するようにする方法を理解していないバッファは本当にuint8_t値が含まれていて、私は1にelem_sizeを設定しています値..

答えて

0

ここにあなたの期待を確認する以外に、ここに答えを与えるのは難しいですが正しいです。 outを直接まっすぐ前方にコンパイルすると、出力バッファelem_sizeは1になるはずです。質問が間違っている理由です。 HL_DEBUG_CODEGEN env変数を2以上に設定してコンパイルすると、Halideが実際にコンパイルしているIRを示すデバッグ出力が表示されます。 (オプションで、compile_to_lowered_stmtと呼ぶと、IRをファイルにダンプすることができます)。これがなぜ機能しないのかを示すのに役立ちます。

コンパイラの問題である可能性は非常に低いですが、古いコードが含まれているか、そのコードスニペットからコンパイルされているフィルタを呼び出していない可能性が高くなります。

関連する問題