CUDAで画像ピラミッドを行う最も効率的な方法は何ですか?私は自分のカーネルを書いているが、もっとうまくいくと想像している。CUDAの効率的な画像ピラミッド?
OpenGL interopを使用してOpenGLテクスチャにバインドし、ハードウェアミップマッピングを使用すると、おそらくはるかに高速になります。 OpenGL/DirectXでアクセス/初期化されたとき、MipMapsは設定されます。
CUDAで画像ピラミッドを行う最も効率的な方法は何ですか?私は自分のカーネルを書いているが、もっとうまくいくと想像している。CUDAの効率的な画像ピラミッド?
OpenGL interopを使用してOpenGLテクスチャにバインドし、ハードウェアミップマッピングを使用すると、おそらくはるかに高速になります。 OpenGL/DirectXでアクセス/初期化されたとき、MipMapsは設定されます。
CUDAカーネルは、最初のテクスチャより50%広い(またはそれ以上の)テクスチャを割り当て、カーネルを使用してテクスチャをダウンサンプリングし、元のテクスチャの横に結果を書き込むと同じことができます。カーネルはおそらく、各スレッドが次のダウンサンプリングされたイメージのピクセルを評価する場所で最も効果的です。サンプリング方式を決定し、ピクセルを結合するための適切な重みを選択するのはあなた次第です。最初に双線形を試してみてください。一度動作すれば、三等線(立方体)や異方性のような他のサンプリング方式を設定できます。単純なサンプリング(線形と立方体)は、合体メモリアクセスが起こるので効率が良いでしょう(CUDA SDKプログラミングガイド)。パラレル呼び出しのためにスレッド数が制限されているので、おそらくカーネルの実行をタイルする必要があります(あまりにも多くのピクセル、あまりにも少ないスレッド=タイルを使ってパラレル実行をチャンクします)。Mesa3Dが参考になるかもしれませんOpenGLの実装)。
あなたの現在のデザインに関する情報を追加して、どこから始めているかを把握してください。 – koan
http://ja.wikipedia.org/wiki/Pyramid_%28image_processing%29 –