問題タブ [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.
halide - Halide::Expr' は文脈上 'bool' に変換できません -- 関数の値を変数に格納する
私はHalideを初めて使用し、最初にアルゴリズムの実装をいじっています。周囲の 8 ピクセルの値に応じて、次のピクセルにスキップするか、何らかの処理を行ってから次のピクセルに移動する関数を作成しようとしています。これを書き込もうとすると、次のコンパイラ エラーが発生します。
84:5: エラー: タイプ 'Halide::Expr' の値は、文脈上 'bool' に変換できません
すべてのチュートリアルを完了し、select 関数がオプションであることを確認しましたが、関数の値を比較したり、それらをどこかに保存したりする方法はありますか?
また、この問題について間違って考えているか、正しい「ハライドの考え方」で実装していない可能性があるので、どんな提案も素晴らしいでしょう。よろしくお願いします!
c++ - GPU (OpenGL) をターゲットとする Halide - ベンチマークと HalideRuntimeOpenGL.h の使用
ハライド初心者です。私は言語の感触をつかむためにチュートリアルをいじっています。現在、OSX のコマンド ラインから実行する小さなデモ アプリを作成しています。
私の目標は、画像に対してピクセル単位の操作を実行し、GPU でスケジュールして、パフォーマンスを測定することです。ここで共有したいことをいくつか試しましたが、次のステップについていくつか質問があります.
最初のアプローチ
Target が OpenGL で GPU にアルゴリズムをスケジュールしたのですが、GPU メモリにアクセスしてファイルに書き込むことができなかったため、Halide ルーチンで、Halide リポジトリにあるglsl サンプル アプリFunc cpu_out
と同様のものを作成して、出力を CPU にコピーしました。
pixel_operation_cpu_out.cpp
この AOT をコンパイルするので、関数呼び出しを行いmain()
ます。main()
別のファイルにあります。
main_file.cpp
注:ここで使用されるクラスは、この Halide サンプル アプリImage
のクラスと同じです。
これは問題なく機能し、期待どおりの出力が得られます。私が理解していることから、CPUメモリでcpu_out
値を使用できるようにします。これが、にアクセスすることでout
これらの値にアクセスできる理由です。output.buf.host
main_file.cpp
2 番目のアプローチ:
私が試みた 2 番目のことは、Halide スケジュールでデバイスからホストへのコピーを作成するFunc cpu_out
のではなく、のcopy_to_host
関数を使用することでしたmain_file.cpp
。
pixel_operation_gpu_out.cpp
main_file.cpp
だから、今、私が考えているのは、それがGPU をpixel_operation_gpu_out
維持しているということです。そうすると、メモリが CPU にコピーされます。このプログラムは、期待される出力も提供します。output.buf
copy_to_host
質問:
2 番目のアプローチは、最初のアプローチよりもはるかに低速です。ただし、遅い部分はベンチマークされた部分にはありません。たとえば、最初のアプローチでは、4k 画像のベンチマーク時間として 17 ミリ秒を取得します。同じ画像の場合、2 番目のアプローチでは、ベンチマーク時間を 22us として取得し、所要時間copy_to_host
は 10 秒です。アプローチ1と2の両方が本質的に同じことをしているので、この動作が予想されるかどうかはわかりません。
次に試みたのは、テクスチャを使用して入力バッファと出力バッファにリンクし、jpeg ファイルに保存する代わりに[HalideRuntimeOpenGL.h][3]
OpenGL コンテキストに直接描画できるようにすることでした。main_file.cpp
ただし、関数の使用方法を理解するための例を見つけることができずHalideRuntimeOpenGL.h
、自分で試したことは常に実行時エラーを引き起こし、解決方法がわかりませんでした。誰かが私に指摘できるリソースを持っているなら、それは素晴らしいことです.
また、上記のコードに関するフィードバックも歓迎します。私はそれが機能し、私が望むことをしていることを知っていますが、それは完全に間違った方法である可能性があり、それ以上のことはわかりません.
halide - Halide で多次元データを操作する方法
私はハライドで働き始めました。明示的に画像処理フレームワークであることは知っていますが、次元削減や低次元空間での数式の分離などの複雑な手順を実行せずに多次元配列 ( > 3D ) を処理する方法はありますか?
ありがとう、カーナジット
c++ - 画像のアルファを計算できません
Halide を使用して簡単な画像計算プログラムを作成しようとしています。だから私は明るさ関数から始めます。
私はこれを得た
しかし、私には問題があります。私の画像はRGBA画像なので、アルファでアルゴリズムを計算します。どうすればそれをスキップして、f(x,y,c) を変更して c を 0-2 のみにすることができますか?