针对AT91SAM9 ARM处理器Linux用户空间程序优化FFT和数学运算
Optimized FFT and mathematics for AT91SAM9 ARM processor Linux userspace program
我正在使用Atmel的AT91SAM9G20处理器为嵌入式Linux系统开发C/C++软件。我需要使用Linux用户空间程序使用定点(或者浮点)数学快速计算FFT。我知道汇编程序可能是实现的方法,并且在使用gcc编译器进行编译时可能需要额外的-mpcu开关。进行这一实施的最佳方式是什么?是否有任何好的参考书或优化的自由和开放源码软件库可用?
我必须实现一些算法,这些算法也需要多次应用小的FFT长度(即1024点),我想知道一些库(如kissft)是否也能正常工作。我也对长FFT长度感兴趣,所以下面的答案中建议的FFTW也会很好地工作。
除了这个问题,我还想知道在ARM9Linux用户空间程序中如何处理整数除法。如果我除以两个整数(例如25/4),除法是用软浮点数完成的吗?我还需要实现一些繁重的数字运算算法,我想知道定点运算是否比浮点运算更好,以及gcc编译器是如何真正处理问题的。
FFTw包含特定于CPU的优化(也可以进行编译时/运行时CPU评测)。
3.3.1版引入了对ARM Neon扩展的支持
- http://www.fftw.org/#features
以及常见问题解答:问题4.2。为什么FFTW这么快
这是一个复杂的问题,没有简单的答案。事实上,作者也不完全知道答案。除了FFTW中的许多小性能漏洞外,FFTW的速度还有三个一般原因。
- FFTW使用各种FFT算法和实现样式,这些算法和样式可以任意组合以使其自身适应机器。请参阅Q4.1"FFTW是如何工作的?"
- FFTW使用代码生成器来生成用于计算小变换的高度优化的例程
- FFTW使用显式分治来利用内存层次结构
相关文章:
- 空基优化子对象的地址
- 关闭||运算符优化
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 返回值优化:显式移动还是隐式
- 人脸跟踪arduino代码的优化
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 纯函数,为什么没有优化
- 为什么大多数 pair 实现默认不使用压缩(空基优化)?
- 如何以优化的方式同时迭代两个间距不相等的数组
- 小字符串优化(调试与发布模式)
- 浮点定向舍入和优化
- Visual Studio 调试优化如何工作?
- 为什么开关的优化方式与 c/c++ 中的链接不同?
- 线性优化目标函数中的绝对值
- GCC 会优化内联访问器吗?
- gcc 如何优化此循环?
- 如何防止 CUDA-GDB 中的<优化输出>值
- 为什么我的程序在 O0 和 O2 的优化级别返回不同的结果
- 1D中的非均匀FFT正向和反向测试
- 针对AT91SAM9 ARM处理器Linux用户空间程序优化FFT和数学运算