2012-09-14 5 views
9

CUDA C++を使用して画像を水平または垂直にミラーリングするための素朴な機能を開発しました。NPP機能は完全に最適化されていませんか?

次に、NVIDIA Performance Primitives Libraryにも画像ミラーリング機能が備わっています。

比較のために、私はNPPに対して私の機能をタイムアウトしました。驚いたことに、私の機能はパフォーマンスが優れていましたが(わずかな差はあるものの、それでもなお...)。

WindowsタイマーとCUDAタイマーを使用して何度か結果を確認しました。

私の質問は次のとおりです。NPP機能はNVIDIA GPU用に完全に最適化されていません

私は開発用にCUDA 5.0、GeForce GTX460M(Compute 2.1)、Windows 8を使用しています。

+0

違いは何パーセントですか?ミラーリング操作はメモリに束縛され、より新しいデバイスは、それらが効率的にどのようなタイプのメモリアクセスパターンを扱うかに柔軟性がある。素朴な実装は、新しいデバイスでは最適に近いかもしれません。おそらく、NPPバージョンは古いデバイスでうまくいくかもしれません。プロファイラからカーネルのメモリ帯域幅の統計情報を取得し、デバイスの最大値と比較することができます。 –

+0

4種類の画像と2種類のサイズでテストしました。 8ビット、16ビット、1チャネル、3チャネル、(1280×720)、(1920×1080)。私は16ビットの最大スピードアップを得ました。サイズ(1280 x 720)のシングルチャンネル画像で、NPPより18.75%高速でした。 – sgarizvi

+1

あなたは、NPPのパフォーマンスが欠けていることは間違いありません。私はCUDAの画像処理を行うための優れたライブラリを見つけました。私は個人的にArrayFireの画像処理の選択が好きで、高速であることがわかっています。http://www.accelereyes.com/arrayfire/c/group__image__mat.htm OpenCVのGPU機能を使って他の人が報告しましたが、そのことについて。パキスタンのTunacodeにもいくつかのものがあります。 –

答えて

9

私はこの回答を投稿することによって投票権を得ることはできません。 :)

NVIDIAはすべてのCUDAライブラリを継続的に改善しています。 NPPは特に大きなライブラリであり、4000以上の機能を維持する必要があります。私たちは、同等のCPUを使用してライブラリを提供するという現実的な目標を持っています.GPUとサポートされているすべてのOSでテストされ、積極的に改善され維持されています。問題の機能(ミラー)は、将来のリリースで改善される予定のパフォーマンスに関する既知の問題です。特定の機能を最適化する必要がある場合は、優先順位付けを行う最良の方法は、NVIDIA CUDA registered developersに利用可能なバグ送信フォームを使用してRFEバグ(拡張要求)を提出することです。

私は別として、ライブラリを「完全に最適化」することはできないと思います。大規模で成長し続けるハードウェアベースでサポートするための大きなライブラリを使用すると、最適化する作業は決して完了しません。 :)

NVIDIAライブラリを試してみると、NVIDIAライブラリのパフォーマンスが全体的に向上し、コンピューティングのエコシステムが向上することを奨励しています。

+3

とは言え...それはおそらく言うことはおそらく十分な時間と労力を要することで、一般的に生の性能に関してライブラリ関数を打ち消すことが可能であるということです。ライブラリは、一般に、より広範に適用できるように、より少ない仮定をする。あなた自身をロールバックするときは、あなたの状況に固有のすべての仮定を使って、物事をスピードアップすることができます。(GPGPUではなく、同じ考えが適用される)心に浮かんでいる一例がソート中です。データについて多くのことを知っていて、これらの前提をコードに盛り込むことができれば、標準的なソート方法を破ることは難しくありません。 – Patrick87

関連する問題