2

私はモバイルとタブレット、たとえばARMデバイスでOpenCVDFTを使用しています。コードはC++です。ARMレジスタと固定小数点演算を使用してFFTパフォーマンスを最適化できると期待していましたが、OpenCVの2倍の時間しか得られず、同時にも得られませんでした。

RADIX-4256ポイントFFTを使用しています。

OpenCVが何をするのか、そしてなぜ最適化がそれほど難しいのかを誰かが知っていますか?ARMデバイスの最速のFFTアルゴリズムはどれですか?基数-4、基数-8、256ポイント、1024 .. ..

4

1 に答える 1

2

OpenCVの実装では、Tegra、Tegra 2、およびTegra3デバイスでデバイス固有の最適化を使用します。TegraとTegra2では、実装が並列化されており、一部の操作ではGLSLシェーダーを使用してGPUで高速化します。Tegra 3では、CPUでの一部の操作をベクトル化するためにNEON SIMD命令を使用し、GPUパフォーマンスをさらに向上させるためにCUDAも使用します。NVidiaがプラットフォームに関する深い知識を使用して最適化の取り組みに人的資源を傾けていることを考えると、奇妙な珍しい操作よりも優れたパフォーマンスを発揮することはおそらく大きな課題です。

この記事は主にTegra3に固有のものですが、使用した手法の種類と、最適化されているがデバイスに依存しないコードを超えたパフォーマンスの高速化について多くのことを説明しています。

于 2012-06-28T01:23:49.240 に答える