2

我在手机和平​​板电脑中使用 OpenCV DFT,比如说 ARM 设备。代码是 C++ 的。我期待能够通过使用 ARM 寄存器和定点算法来优化 FFT 性能,但我只设法获得比 OpenCV 多一倍的时间,甚至不是同一时间。

我使用 RADIX-4 256 点 FFT。

有人知道 OpenCV 是做什么的,为什么优化如此困难?ARM 设备最快的 FFT 算法是什么?radix-4, radix-8, 256 点, 1024...

4

1 回答 1

2

OpenCV 的实现在 Tegra、Tegra 2 和 Tegra 3 设备上使用特定于设备的优化。在 Tegra 和 Tegra 2 上,实现是并行的,一些操作使用 GLSL 着色器在 GPU 上加速;在 Tegra 3 上,它还使用 NEON SIMD 指令对 CPU 上的一些操作进行矢量化,并使用 CUDA 来获得更好的 GPU 性能。鉴于 NVidia 将人力投入到优化工作中,利用他们对平台的深入了解,在不常见的操作中超越它可能是一项艰巨的任务。

这篇文章主要是针对 Tegra 3 的,但是讨论了很多关于他们使用的技术类型以及他们通过优化但与设备无关的代码获得的性能加速。

于 2012-06-28T01:23:49.240 回答