我正在为使用Atmel的AT91SAM9G20处理器的嵌入式Linux系统开发C/C++软件。我需要使用Linux用户空间程序使用定点(或浮点)数学快速计算FFT。我知道这里可能需要使用汇编语言来实现,并且在使用gcc编译器进行编译时可能需要额外的-mpcu开关。进行此实现的最佳方式是什么?是否有好的书籍参考或优化的自由/开源软件库可用?
我必须实现一些算法,这些算法也需要较小的FFT长度(即1024点)才能多次应用,我想知道一些库(如kissfft)是否也能同样有效。我也对长的FFT长度感兴趣,所以在下面的答案中建议的FFTW也可以很好地工作。
与这个问题相关的是,我也想知道在ARM9 Linux用户空间程序中整数除法是如何处理的。如果我除以两个整数(如25 / 4),除法是否使用软浮点数?我还需要实现一些繁重的数字运算算法,我想知道在这里使用定点数学是不是比浮点数学更好,以及gcc编译器到底是如何处理这些事情的。
发布于 2012-03-26 23:17:51
FFTw包含特定于CPU的优化(也可以进行编译时/运行时CPU分析)。
版本3.3.1引入了对ARM霓虹灯扩展的支持
常见问题解答:问题4.2。为什么FFTW这么快?
这是一个复杂的问题,没有简单的答案。事实上,作者也不完全知道答案。除了FFTW中的许多小性能问题外,FFTW速度的主要原因有三个。
https://stackoverflow.com/questions/9874763
复制相似问题