This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320C6678:使用 FFTLIB 时的计算错误

Guru**** 2925090 points

Other Parts Discussed in Thread: FFTLIB, TMS320C6678

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/638732/tms320c6678-computation-errors-when-using-the-fftlib

器件型号:TMS320C6678
主题中讨论的其他器件: FFTLIB

您好!

 我正在尝试使用 https://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/546919上的 FFTLIB 评估 TMS320C6678的性能

我也没有达到文件(Nissim Saban)中所述的生产率。 多核 DSP 与 GPU: e2e.ti.com/.../0456.Multi_5F00_core_5F00_DSPs_5F00_vs_5F00_GPUs_5F00_TI_5F00_for_5F00_distribution.pdf)。

我使用评估板 TMDSEVM6678LE 上的 Blackhawk XDS560v2仿真器运行代码 、并具有以下版本:

  • CCS: 6.2.0.00050
  • DSPLIB:3.4.0
  • EDMA3:2.12.1
  • 框架组件:3.40.2.07
  • MCSDK PDK:1.2.6
  • SYS/BIOS:6.45.1.29
  • xDAIS:7.24.0.04
  • FFTLIB_c66x:2.0.0.2。

但我有一个计算误差。 日志是:

[C66xx_0] FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0      8192       3.     

    1      8192       3.     

    2.       8.       3.     

    3.       0       3.     

    4.      8192       3.     

    5.      8192       3.     

    6.       8.       3.     

    7.       0       3.     

    8.       0       3.     

    9.      8192       3.     

FFT_sp_1D_C2C_ecpy 大小= 1024

MAX_DIFF = 0.006134 N = 1024周期:12235

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0      8192       3.     

    1      8192       3.     

    2.       8.       3.     

    3.       0       3.     

    4.       0       3.     

    5.       0       3.     

    6.       0       3.     

    7.       0       3.     

    8.       0       3.     

    9.       0       3.     

FFT_sp_1D_C2C_Direct 大小= 1024

MAX_DIFF = 0.006134 N = 1024周期:9918

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0     16384       3.     

    1     16384       3.     

    2.       8.       3.     

    3.       0       3.     

    4.     16384       3.     

    5.     16384       3.     

    6.       8.       3.     

    7.       0       3.     

    8.       0       3.     

    9.     16384       3.     

FFT_sp_1D_C2C_ecpy 大小= 2048

MAX_DIFF = 0.026672 N = 2048周期:23241

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0     16384       3.     

    1     16384       3.     

    2.       8.       3.     

    3.       0       3.     

    4.       0       3.     

    5.       0       3.     

    6.       0       3.     

    7.       0       3.     

    8.       0       3.     

    9.       0       3.     

FFT_sp_1D_C2C_Direct 大小= 2048

MAX_DIFF = 0.026672 N = 2048周期:19334

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0     32768       3.     

    1     32768       3.     

    2.      520.       3.     

    3.       0       3.     

    4.      2048       3.     

    5.      2048       3.     

    6.      520.       3.     

    7.       0       3.     

    8.       0       3.     

    9.      1024       3.     

FFT_sp_1D_C2C_ecpy 大小= 4096

MAX_DIFF = 0.001486 N = 4096周期:451707

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0     32768       3.     

    1     32768       3.     

    2.       8.       3.     

    3.       0       3.     

    4.       0       3.     

    5.       0       3.     

    6.       0       3.     

    7.       0       3.     

    8.       0       3.     

    9.       0       3.     

FFT_sp_1D_C2C_Direct 大小= 4096

MAX_DIFF = 0.034302 N = 4096周期:40702

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0     65536       3.     

    1     65536       3.     

    2.      520.       3.     

    3.       0       3.     

    4.      4096       3.     

    5.      4096       3.     

    6.      520.       3.     

    7.       0       3.     

    8.       0       3.     

    9.      2048       3.     

FFT_sp_1D_C2C_ecpy size= 8192

MAX_DIFF = 0.003288 N = 8192周期:827691

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0     65536       3.     

    1     65536       3.     

    2.       8.       3.     

    3.       0       3.     

    4.       0       3.     

    5.       0       3.     

    6.       0       3.     

    7.       0       3.     

    8.       0       3.     

    9.       0       3.     

FFT_sp_1D_C2C_Direct size=8192

MAX_DIFF = 0.082520 N = 8192周期:229370

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0    131072       3.     

    1    131072       3.     

    2.      1032.       3.     

    3.       0       3.     

    4.      4096       3.     

    5.      4096       3.     

    6.      1032.       3.     

    7.       0       3.     

    8.       0       3.     

    9.      2048       3.     

FFT_sp_1D_C2C_ecpy 大小= 16384

MAX_DIFF = 0.017578 N = 16384周期:1576029

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0    131072       3.     

    1    131072       3.     

    2.       8.       3.     

    3.       0       3.     

    4.       0       3.     

    5.       0       3.     

    6.       0       3.     

    7.       0       3.     

    8.       0       3.     

    9.       0       3.     

FFT_sp_1D_C2C_Direct 大小= 16384

MAX_DIFF = 21.559570 N = 16384周期:723440

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0    262144       3.     

    1    262144       3.     

    2.      1032.       3.     

    3.       0       3.     

    4.      8192       3.     

    5.      8192       3.     

    6.      1032.       3.     

    7.       0       3.     

    8.       0       3.     

    9.      4096       3.     

FFT_sp_1D_C2C_ecpy 大小= 32768

MAX_DIFF = 0.032227 N = 32768周期:2954513

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0    262144       3.     

    1    262144       3.     

    2.       8.       3.     

    3.       0       3.     

    4.       0       3.     

    5.       0       3.     

    6.       0       3.     

    7.       0       3.     

    8.       0       3.     

    9.       0       3.     

FFT_sp_1D_C2C_Direct 大小= 32768

MAX_DIFF = 75.476563 N = 32768周期:1832012

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0    524288       3.     

    1    524288       3.     

    2.      2056       3.     

    3.       0       3.     

    4.      8192       3.     

    5.      8192       3.     

    6.      2056       3.     

    7.       0       3.     

    8.       0       3.     

    9.      4096       3.     

FFT_sp_1D_C2C_ecpy size= 65536

MAX_DIFF = 0.164063 N = 65536周期:5656699

FFT 存储器缓冲器:

  缓冲  区大小(字节)  对齐

    0    524288       3.     

    1    524288       3.     

    2.       8.       3.     

    3.       0       3.     

    4.       0       3.     

    5.       0       3.     

    6.       0       3.     

    7.       0       3.     

    8.       0       3.     

    9.       0       3.     

FFT_sp_1D_C2C_Direct 大小= 65536

MAX_DIFF = 216.203125 N = 65536周期:4295576

我的项目: e2e.ti.com/.../3302.fft_5F00_sp_5F00_1d_5F00_c2c_5F00_k1_5F00_66_5F00_LE_5F00_ELF.rar

原因可能是什么?  为什么在一个平台上存在任何计算错误?  FFTLIB 为什么使用框架组件和 XDAIS?

此致、

Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、

    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    这个主题已经创建了将近一个月了、但我仍然没有得到答案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、

    我们已从 MCSDK 迁移到处理器 SDK、FFT 库现在为3.1。

    www.ti.com/.../PROCESSOR-SDK-C667X
    processors.wiki.ti.com/.../Processor_SDK_RTOS_Release_Notes

    您是否可以将项目重新创建到新版本?

    谢谢、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Garrett!

    感谢您的回复。 FFTLIB v3.1、不包括示例项目。 由于封装和库存在大量 FFTLIB 依赖关系、我在将项目重新构建到新版本时遇到了一些困难。 我认为 FFTLIB v3.1与 FFTLIB v2.0没有明显的区别。 此外、我找不到 FFTLIB 的任何文档。 您能否为 FFTLIB v3.1提供有关文档和示例项目的链接?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在尝试将示例项目从 FFTLIB v2.0导出到 FFTLIB v3.1。 正如我在上面写的那样、FFTLIB v3.1不包含任何示例。 目录 d:\ti\fftlib_3_1_0_0\packages/ti\fftlib\src\FFT_sp_1D_C2c\仅包含文件 FFT_sp_1D_C2C.h 需要定义以下变量:

    并连接库

    在编译时、我遇到折页错误:
    未解析的符号 FFT_sp_plan_1D_C2C、首先在./FFT_sp_1D_C2C_d.obj FFT_sp_1D_C2C_K1_66_LE_ELF 中引用
    未解析的符号 lib_smim_falloc、首先在./FFT_common.obj FFT_sp_1D_C2C_K1_66_LE_ELF 中引用
    未解析的符号 lib_smim_finit、首先在./FFT_common.obj FFT_sp_1D_C2C_K1_66_LE_ELF 中引用
    未解析的符号 lib_smem_freset、首先在./FFT_common.obj FFT_sp_1D_C2C_K1_66_LE_ELF 中引用

    函数 FFT_sp_plan_1D_C2C 在 FFT_sp_1D_C2C.h 中被禁止、函数 lib_smim_falloc、lib_smm_finit 和 lib_smm_freset -在 lib_memmgt.h 中
    我猜库 d 中包含的函数 FFT_sp_plan_1D_C2C、FFT_sp_1D_C2C_Direct 和 FFT_sp_1D_C2C_4step_ecpy:\ti\fftlib_3_1_0_0\packages/ti\fftlib\fftlib.ae66。 为什么会发生这种错误?
    此外、由于结构不匹配、我无法使用 FFTLIB 2.0的 FFT_sp_plan_1D_C2C.c。 如何使用库 FFTLIB v3.1?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    米歇尔

    您还可以发布完整的构建日志吗? 是的,lib_smim_*函数位于 fftlib.ae66中。 我将尝试了解为什么器件测试示例不在版本中。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Garrett!

    感谢你的帮助。 我附加了日志和项目。 CCS v7.300019位于目录"D:\ti"中。  Processor SDK RTOS С667x v04.01.00.06也位于目录 "D:\ti"中

    e2e.ti.com/.../2210.log.txt

    e2e.ti.com/.../fft_5F00_sp_5F00_1d_5F00_c2c.rar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于未解析符号 lib_smm_falloclib_smm_finitlib_smm_freset 而导致的错误在向库架构和框架添加路径后消失

    但由于未解析符号 FFT_sp_plan_1D_C2C 而导致的错误仍然存在、尽管 CCS 中存在路径。 FFT_sp_plan_1D_C2C 函数的源代码在哪里?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、

    看起来,FFT_sp_plan_1D_C2C()函数仅可从 FFTlib 2.0.2获取,您可以尝试将其源代码添加到项目中。 我正在与团队讨论函数声明头文件和缺少的实现...

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Garrett!

    感谢你的答复。

    我尝试向项目中添加 FFT_sp_plan_1D_C2C ()的源代码。 函数 FFT_sp_plan_1D_C2C ()调用函数 FFT_sp_1D_C2C_Direct ()或 FFT_sp_1D_C2C_ecpy ()或 FFT_sp_1D_C2C_4step_ecpy ()、这些函数未包含在库 FFTLIB v3.1中。

    此外、文件 fft_common.h 中声明的结构在库 FFTLIB v2.0和 FFTLIB v3.1中也有所不同、例如:

    /* FFT 参数 FFTLIB v3.1 */
    struct {
    int N;
    FFT_PARA_MIB_BS_t para1;
    float * in;
    float * out;
    float * tw;
    float *bn;
    float *workbuf;
    }sp_1D_C2C_d; 
    /* FFT 参数 FFTLIB v2.0 */
    struct{
    int N;
    int M;
    int twsize;
    int N_P2;
    int s_R3;
    int s_r5;
    float * in;
    float * out;
    float * tw;
    float * bn;
    float *workbuf;
    }sp_1D_C2C_d; 

    即使结构的参数设置正确、仍然没有实现函数 FFT_sp_1D_C2C_Direct ()FFT_sp_1D_C2C_ecpy () FFT_sp_1D_C2C_4step_ecpy ()

    FFTLIB v2.0中的文件 FFT_sp_1D_C2C.c 包含函数 FFT_sp_1D_C2C_Direct ()FFT_sp_1D_C2C_ecpy () FFT_sp_1D_C2C_4step_ecpy ()的源代码。 这些函数从位于目录 packages/ti\fftlib\src\common\FFT 中的 FFTLIB 调用函数、例如 FFT_sp_cmplx_notwid_br ()FFT_SPxSP_Mixed_radx_C2C ()
    对于库 FFTLIB v2.0和 FFTLIB v3.1、目录 packages/ti\fftlib\src\common\FFT 中的文件没有区别。
    唯一的区别是在第390 - 392行中的文件 FFT_DP_Mixed_bs.c 中:在库 FFTLIB v3.1中、结果被除以 M
    因此、FFTLIB v3.1在 FFTLIB v3.1的计算速度和精度方面不能有所不同。 然后、我将重复我的第一个问题:"为什么在一个平台上存在任何计算错误?"。

    我还有更多问题:

    1. 为什么我没有达到文件(Nissim Saban)中所述的生产率。 多核 DSP 与 GPU 对比)?
    2. 描述库 FFTLIB 函数的任何文档在哪里?
    3. 函数 FFT_sp_1D_C2C_Direct ()FFT_sp_1D_C2C_ecpy () FFT_sp_1D_C2C_4step_ecpy ()之间有何区别
    4. 如何使用 FFTLIB v3.1? 何时有包含示例和文档的工作版本?
    5. 哪个函数计算最大长度(2048 x 2048)的 FFT?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用 FFTLIB v3.1启动了该项目。 我根据 FFTLIB v2.0中的函数 FFT_sp_plan_1D_C2C ()填充结构。 在该函数之后,调用了 FFTLIB v3.1中的 FFT_sp_cmplx_notwid_br()。 结果类似于 先前使用 FFTLIB v2.0获得的结果:

    [C66xx_0] FFT 存储器缓冲器:
    缓冲区大小(字节)对齐
    0 8192 3.
    1 8192 3.
    2. 8. 3.
    3. 0 3.
    4. 0 3.
    5. 0 3.
    6. 0 3.
    7. 0 3.
    8. 0 3.
    9. 0 3.
    FFT_sp_1D_C2C_Direct大小= 1024
    max_diff = 0.006134N = 1024周期:9538
    
    FFT 存储器缓冲区:
    缓冲区大小(字节)对齐
    0 16384 3.
    1 16384 3.
    2. 8. 3.
    3. 0 3.
    4. 0 3.
    5. 0 3.
    6. 0 3.
    7. 0 3.
    8. 0 3.
    9. 0 3.
    FFT_sp_1D_C2C_Direct大小= 2048
    max_diff = 0.026672N = 2048周期:19000
    
    FFT 存储器缓冲器:
    缓冲区大小(字节)对齐
    0 32768 3.
    1 32768 3.
    2. 8. 3.
    3. 0 3.
    4. 0 3.
    5. 0 3.
    6. 0 3.
    7. 0 3.
    8. 0 3.
    9. 0 3.
    FFT_sp_1D_C2C_Directsize= 4096
    max_diff = 0.034302N = 4096周期:40427
    
    FFT 存储器缓冲器:
    缓冲区大小(字节)对齐
    0 65536 3.
    1 65536 3.
    2. 8. 3.
    3. 0 3.
    4. 0 3.
    5. 0 3.
    6. 0 3.
    7. 0 3.
    8. 0 3.
    9. 0 3.
    FFT_sp_1D_C2C_Directsize= 8192
    max_diff = 0.0852520N = 8192周期:230581
    
    FFT 存储器缓冲器:
    缓冲区大小(字节)对齐
    0 131072. 3.
    1 131072. 3.
    2. 8. 3.
    3. 0 3.
    4. 0 3.
    5. 0 3.
    6. 0 3.
    7. 0 3.
    8. 0 3.
    9. 0 3.
    FFT_sp_1D_C2C_Directsize= 16384
    max_diff = 11.515625N = 16384周期:723321
    
    FFT 存储器缓冲区:
    缓冲区大小(字节)对齐
    0 262144. 3.
    1 262144. 3.
    2. 8. 3.
    3. 0 3.
    4. 0 3.
    5. 0 3.
    6. 0 3.
    7. 0 3.
    8. 0 3.
    9. 0 3.
    FFT_sp_1D_C2C_Directsize= 32768
    max_diff = 35.089844N = 32768周期:1830961
    
    FFT 存储器缓冲器:
    缓冲区大小(字节)对齐
    0 524288 3.
    1 524288 3.
    2. 8. 3.
    3. 0 3.
    4. 0 3.
    5. 0 3.
    6. 0 3.
    7. 0 3.
    8. 0 3.
    9. 0 3.
    FFT_sp_1D_C2C_Directsize= 65536
    max_diff = 94.429688N = 65536周期:4299141 

    我在 CCS 中将项目的文件附加到了消息中。

    e2e.ti.com/.../6443.fft_5F00_sp_5F00_1d_5F00_c2c.rar

    我的问题仍然相关。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、

    我已提交请求单、用于在未来的 FFTLIB 版本中添加示例 CCS 工程。 将导入您的项目并查看我是否可以重现您发现的问题。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、

    我可以复制您测量的周期编号、并与库团队合作以对其进行分类。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Garrett!

    感谢您的回答。  我找到 了 Mounir Bahtat 的一篇文章《针对 VLIW 架构的基于快速枚举的模数调度启发法》。  本条声明如下:

    "我们使用所描述的启发法生成了一个 FFT (快速傅里叶变换)算法的高效实现、该算法经过细微修改、未考虑超时限制。 在 TMS320C6678的1个内核中的25780个周期内执行了4K 采样 FFT (实现了 II=8、MaxLive=12)。 与 SMS 实现的可实施计划相比、周期中的增益约为10%。 TI (德州仪器)在其 FFT 库(FFTLIB)中使用了我们的 FFT 汇编级代码。"

    但 使用 FFTLIB 的4K 样本 FFT 的结果是 40427个周期。  原因可能是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在不使用 SYS/BIOS 的情况下创建了项目。 FFT 4K 计算花费29637个周期!

    我的代码是:

    T_start =_itoll (TSCH、TSCL);
    _怀念_pipe_notwid_br ((double *) ptr_x、N/16);
    _FFT_rad_2P2_next _notwid_br ((double *) PTR_x、(double *) PTR_x、1、SVG、N、 (double *) w、(double *) ptR_y);
    T_stop =_itoll (TSCH、TSCL);
    T_opt =(t_stop - t_start)- t_开销;
    printf ("\tFFTLIB:FFT 大小%d 计算周期:%d\n\n"、N、t_opt); 

    其中 N = 4096。

    数据被放置在 L2SRAM 中。

    我的项目是 :e2e.ti.com/.../FFT_5F00_4K.7z

     

    为什么函数  FFT_sp_cmplx_notwid_br ()(写在 C 上)  和使用 汇编器函数  miss _pipe_notwid_br () FFT_rad_2P2_next _notwid_br () 需要 40427个周期?  每个逻辑持续10K 周期?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Garrett!
    您能否测量周期数? 结果如何?
    计算中的误差是由于 FFTLIB 中的扭曲因子是在浮点格式的 FTF 计算中直接迭代计算的。
    请注意、FFT 达到4、096个点时、性能良好。 当计算超过4096个点的 FFT 时、性能急剧下降:FFT4k - 40 427个周期、FFT8k - 230 581个周期。
    FFTLIB 计算的大阶 FFT 简化为 FFT4k 和蝶形基数2的计算。
    我认为、通过用矩阵表示输入序列并先按行再按列计算 FFT、计算 FFT 会更高效。
    我还有更多问题。 主要问题是如何实现非常大的 FFT 文档中指定的性能?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Garrett!
    您有结果吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、

    我们已就此问题与开发团队联系、但他们表示、由于失去了此模块的主要开发人员、可能会有一些延迟。 我们感谢您在这个问题上的耐心。

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Rahul! 你好,Garrett!
    自您上次收到消息以来、已过了将近一个月。 您是否有关于 FFTLIB 的任何信息?