0

2 次元の倍精度浮動小数点画像を定義する、既に割り当てられている C++ 配列を Halide::Image オブジェクトでラップする方法について質問があります。

私はすでに見てきました:

C++ 配列から Halide Image へ (およびその逆)

これは私がやりたいことに近いですが、ハライドの buffer_t のホスト メンバーの uint8_t タイプと、uint8_t ではない既存の画像をどのように操作するかについて混乱しています。

aot を使用するぼかしアプリでは、この例では Halide Image が割り当てられ、要素がこの Halide Image にコピーされていることがわかります。私はこれをしたいのですが、コピーにお金を払う必要はありません。

load_image を使用するオプションはありません。ダブル * で定義された、既に割り当てられている既存のメモリを使用する必要があります。

Image<uint16_t> input(6408, 4802);

for (int y = 0; y < input.height(); y++) {
    for (int x = 0; x < input.width(); x++) {
        input(x, y) = rand() & 0xfff;
    }
}
4

1 に答える 1

1

uint8_t*ホスト フィールドの型は、任意のデータ配列buffer_tへの単なるポインタです。または配列を自由に指すことができます。これは基本的に、実際のパイプライン コードによって再解釈されるポインターです。その解釈は、そこからロードされる Halide プログラムとフィールド (たとえば、さまざまな種類の浮動小数点データの場合) の組み合わせによって決定されます。floatdoublevoid*elem_sizesizeof(double)sizeof(float)

于 2015-10-19T23:29:18.580 に答える