2012-05-17 31 views
2

我在手機和平​​板電腦中使用OpenCV DFT,比方說ARM設備。代碼使用C++。我期望能夠通過使用ARM寄存器和定點算法來優化FFT性能,但我只設法比OpenCV獲得兩倍的時間,甚至不是同一時間。使用C++定點優化ARM設備性能的FFT

我使用RADIX-4 256點FFT。

有人知道OpenCV做什麼,爲什麼它很難優化?哪種ARM設備最快的FFT算法?基數4,基數8,256點,1024 ...

+3

什麼是ARM設備或處理器類型?一些ARM體系結構包括VFP或NEON單元,可以加速向量化的短浮點運算,並且可以在彙編語言中進行優化。 – hotpaw2

+2

沒有NEON。這是一個tegra,ARM9。 –

+2

看看FFT,它的一個快速方法:http://www.cmlab.csie.ntu.edu.tw/cml/dsp/training/coding/transform/fft.html – vgonisanz

回答

2

OpenCV的實現在Tegra,Tegra 2和Tegra 3設備上使用設備特定的優化。在Tegra和Tegra 2上,實現是並行化的,有些操作使用GLSL着色器在GPU上加速;在Tegra 3上,它還使用NEON SIMD指令對CPU上的某些操作進行向量化,並使用CUDA實現更好的GPU性能。鑑於NVidia將人力資源投入到優化工作中,利用他們對平臺的深入瞭解,超過這種奇怪的非常規操作可能會是一項艱鉅的任務。

This article大部分都是Tegra 3特有的,但他們談論了很多關於他們使用的技術以及他們通過優化但與設備無關的代碼獲得的性能提升。