問題タブ [halide]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
532 参照

python - Cレイアウトのnumpy配列を使用したハライド

私は Halide を使い始めており、Python 環境から使用しています。その Python 環境内でデータは Numpy 配列として渡されますが、これは実際には別の場所で定義された C++ 配列のエイリアスです。

ただし、Halide 関数の呼び出しを使用すると、エラーが発生します。

これは、numpy 配列を Fortran レイアウト配列にコピーすることで「解決」できます。

img と res を使用して、入力画像と出力画像を作成します。ただし、これには余分なコピー操作が含まれることに注意してください。これは、グローバル メモリ アクセス全体にとって非常に悪いことです。

この問題を回避するにはどうすればよいですか? 私が考えていた方法は、配列に Fortran レイアウトがあり、インデックスが適切に切り替えられていることを実際に Python に伝えることです....ただし、現在 PyArray_SimpleNewFromData を使用して Python 配列を取得し (実際にデータをコピーすることなく)、結果は次のようになります。 C スタイルの配列。

0 投票する
1 に答える
393 参照

c++ - GeneratorParam として指定された型を持つ ImageParam を使用して Generator を作成するにはどうすればよいですか?

さまざまな画像データ タイプの画像パイプラインを実装したいと考えています。パイプラインを記述するメソッド、データ型パラメーターを指定する 、および入力画像を指定するメンバーをGenerator含むクラスを定義しています。の型を上で定義した型に指定すると、ジェネレーターを実行するときにどの型を指定しても、入力画像の型は常に既定の型になります。メソッドの本体内の宣言をコピーすると、正常に動作しているようです。これは、異なるタイプを持つことができる入力画像でパイプラインを定義する正しい方法ですか?build()GeneratorParam<type>ImageParamImageParamGeneratorParam<Type>ImageParambuild()

私が最初に書いたクラスは次のとおりです。

ジェネレーターをコンパイルして実行するとdatatype、デフォルトとは異なるパイプラインが生成されます。

その後、すべて問題ないように見えますが、パイプラインに渡すバッファーが uint8 であるため、実行時にパイプラインがクラッシュしますが、float 型 (ジェネレーター クラスで指定したデフォルト) のイメージが予期されていました。

ImageParamブロック内の宣言をコピーして問題を修正しましたbuild()が、それは少し汚いようです。より良い方法はありますか?これが今のクラスです:

ありがとう。

0 投票する
2 に答える
1179 参照

c++ - float 配列として表される HDR 画像でハロゲン化物を使用する

これが私の最初の投稿なので、何か間違っていたらごめんなさい:)。頑張ります。

私は現在、HDR 画像処理プログラムに取り組んでおり、Halide を使用してベース TMO を実装するつもりはありません。問題は、すべての画像がfloat配列として表されていることです(b1、g1、r1、a1、b2、g2、r2、a2、...のような順序で)。Halide を使用して画像を処理するには、Halide::Image クラスが必要です。問題は、それらのデータをそこに渡す方法がわからないことです。

誰でも助けることができますか、同じ問題を抱えていて答えを知っていますか?

編集:

ついに手に入れました!ジェネレーターの入力バッファーと出力バッファーにストライドを設定する必要があります。助けてくれてありがとう:-)

編集:

私は2つの異なる方法を試しました:

また:

Halide.h ファイルを編集して uint8_t * host を float_t * host に変更することを考えていましたが、それは良い考えではないと思います。

編集:

float 画像 (RGBA) で以下のコードを使用してみました:

AOT 関数の生成:

適切なコードの呼び出し:

残念ながら、msg でクラッシュしました:

この行に何か問題があると思います: output_buf.stride[0] = buf.stride[0] = 4 ですが、何を変更すればよいかわかりません。任意のヒント?

0 投票する
1 に答える
338 参照

c++ - ハライド式: _pFirstBlock == pHead 単純なプログラムでクラッシュする

Halideを使って簡単なプログラムを作ってみました。最初のチュートリアルを使用して、数行のコードをコピーして貼り付けます。その後、いくつかの問題が発生しました

ライン;

エラー: アサーションのデバッグに失敗しました!

プログラム: D:\SVN\Inzynierka\Source\HDRView\x64\Debug\test.exe ファイル: f:\dd\vctools\crt\crtw32\misc\dbgheap.c 行: 1424

式: _pFirstBlock == pHead

コールスタック:

編集:

問題の解決策を見つけました。Visual Studio 2015 は有罪でした。プロジェクト プロパティの Platform Toolset を Visual Studio 2013 に変更した後、すべて正常に動作します...助けてくれてありがとう。

0 投票する
1 に答える
165 参照

c++ - スプリットが可能かどうかのハロゲン化チェック

私は異なる画像サイズを取るHalideプログラムを書いています。最適化するとき、ループをいくつかの「サブループ」に分割して、これを特定の係数で並列化できるようにします。ただし、小さな画像の場合、画像が分割係数よりも小さい場合、これは問題になる可能性があります。または、より正確に言えば、ループ内の反復回数が分割係数よりも小さい場合です。

範囲外の読み取りは を使用して処理されますHalide::BoundaryConditions。確かに if ステートメントを使用して分割係数を手動で確認できますが、Halide には最適化のための BoundaryConditions に似たものがありますか?