私は、インテルのC++で画像処理ソフトウェアを開発しています。これは、小さな(約1kpx)画像に対してバイキュービック補間アルゴリズムを繰り返し実行する必要があります。これには多くの時間がかかり、スピードアップを目指しています。私が今行っているのは、文献に基づいた基本的な実装です。行列の乗算を行わず、補間多項式の部分にあらかじめ計算された式を使用し、最後には固定された(速度に関して)行列乗算コードのポイントバージョン(実際にはより遅く動作します)。私はまた、最適化された実装を備えた外部ライブラリを持っていますが、それでも私のニーズには遅すぎます。私は次の検討していたことである:仕事をシフト畳み込み バイキュービック補間アルゴリズムの実行時間を最適にするにはどうすればよいですか?
- ベクトルOpenCLなどを使用したGPU
これらのアプローチのどれがパフォーマンスを最大に向上させることができますか?あなたは別のものを提案できますか?ありがとう。
私たちの話はいかがですか?比較的速い操作を何度もやっているのか、それとも期待していたよりもずっと遅いので遅いですか? – Neil
私はそれが比較的速いと思いますが、私はそれをたくさん行う必要があります。外部ライブラリは約27us(SSE)でそれを引き出し、私の最善の実装は約50usを引き出します。 – neuviemeporte
GPUを使用する場合、アルゴリズムの出力はどうしますか?メインメモリに戻る必要がありますか?それ自体がボトルネックになる可能性はありますか? –