我在手机和平板电脑中使用OpenCV DFT,比如ARM设备。代码用C ++编写。我期望通过使用ARM寄存器和定点算术来优化FFT性能,但我只能获得比OpenCV更长的时间,甚至不是同一时间。
我使用RADIX-4 256点FFT。
有人知道OpenCV做了什么,为什么优化这么难?哪个是ARM设备最快的FFT算法? radix-4,radix-8,256点,1024 ......
答案 0 :(得分:2)
OpenCV的实施在Tegra,Tegra 2和Tegra 3设备上使用特定于设备的优化。在Tegra和Tegra 2上,实现是并行化的,一些操作使用GLSL着色器在GPU上加速;在Tegra 3上,它还使用NEON SIMD指令对CPU和CUDA上的某些操作进行矢量化,以获得更好的GPU性能。鉴于NVidia将人力资源用于优化工作,利用他们对平台的深入了解,超越奇怪的罕见操作可能是一项重大任务。
This article主要是特定于Tegra 3,但他们谈论了很多关于他们使用的技术以及他们优化的性能加速但是与设备无关的代码。