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: Computation errors when using the FFTLIB

Part Number: TMS320C6678
Other Parts Discussed in Thread: FFTLIB

Hello!

I'm trying to evaluate the performance of TMS320C6678 using FFTLIB according https://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/546919.

I also do not achieve the productivity stated in the document (Nissim Saban. MultiCore DSP vs GPUs: e2e.ti.com/.../0456.Multi_5F00_core_5F00_DSPs_5F00_vs_5F00_GPUs_5F00_TI_5F00_for_5F00_distribution.pdf).

I run the code with the Blackhawk XDS560v2 Emulator on Evaluation Board TMDSEVM6678LE and have following versions:

  • CCS:  6.2.0.00050
  • DSPLIB: 3.4.0
  • EDMA3: 2.12.1
  • Framework Components: 3.40.2.07
  • MCSDK PDK: 1.1.2.6
  • SYS/BIOS: 6.45.1.29
  • XDAIS: 7.24.0.04
  • FFTLIB_c66x: 2.0.0.2.

But I have a calculation error. Log is:

[C66xx_0] FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 1024

max_diff = 0.006134 N = 1024 Cycle: 12235

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 1024

max_diff = 0.006134 N = 1024 Cycle: 9918

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 2048

max_diff = 0.026672 N = 2048 Cycle: 23241

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 2048

max_diff = 0.026672 N = 2048 Cycle: 19334

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 4096

max_diff = 0.001486 N = 4096 Cycle: 451707

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 4096

max_diff = 0.034302 N = 4096 Cycle: 40702

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 Cycle: 827691

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 Cycle: 229370

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 16384

max_diff = 0.017578 N = 16384 Cycle: 1576029

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 16384

max_diff = 21.559570 N = 16384 Cycle: 723440

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 32768

max_diff = 0.032227 N = 32768 Cycle: 2954513

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 32768

max_diff = 75.476563 N = 32768 Cycle: 1832012

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 Cycle: 5656699

FFT memory buffers:

    Buffer    Size(bytes)    Alignment

       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 size= 65536

max_diff = 216.203125 N = 65536 Cycle: 4295576

My project: 3302.fft_sp_1d_c2c_k1_66_LE_ELF.rar

What could be the reason? Why are there any calculations errors on one platform? Why does the FFTLIB use Framework Components and XDAIS?

Best Regards,

Michael

  • Hi Michael,

    I've forwarded your query to the software experts. Their feedback should be posted here.

    BR
    Tsvetolin Shulev
  • Hello!
    it's been almost a month since the topic was created, but I still have not received an answer.

  • Michael,

    We have moved to Processor SDK from MCSDK, and the FFT lib is now 3.1.

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

    Would it be possible for you to re-base your project to the new release?

    Thanks,
    Garrett
  • Hello Garrett!

    Thank for your reply. FFTLIB v3.1, does not include example projects. I have got some dificulties in re-basing my project to new release because of a lot of FFTLIB dependencies with packages and libs. I think also FFTLIB v3.1 has no significant differences from FFTLIB v2.0. Also I can't find any documents for FFTLIB. Can you give me link on documents and example projects for FFTLIB v3.1?

  • I'm trying to export example project from FFTLIB v2.0 to FFTLIB v3.1. As i wrote above, FFTLIB v3.1 contains no examples. Directory d:\ti\fftlib_3_1_0_0\packages\ti\fftlib\src\fft_sp_1d_c2c\ contains only file fft_sp_1d_c2c.h. It was required to define the variables:

    and connect the library

    While compiling i have got folowing errors:
    unresolved symbol fft_sp_plan_1d_c2c, first referenced in ./fft_sp_1d_c2c_d.obj fft_sp_1d_c2c_k1_66_LE_ELF
    unresolved symbol lib_smem_falloc, first referenced in ./fft_common.obj fft_sp_1d_c2c_k1_66_LE_ELF
    unresolved symbol lib_smem_finit, first referenced in ./fft_common.obj fft_sp_1d_c2c_k1_66_LE_ELF
    unresolved symbol lib_smem_freset, first referenced in ./fft_common.obj fft_sp_1d_c2c_k1_66_LE_ELF

    The function fft_sp_plan_1d_c2c diclared in fft_sp_1d_c2c.h, the functions lib_smem_falloc, lib_smem_finit and lib_smem_freset - in lib_memmgt.h.
    I guess that functions fft_sp_plan_1d_c2c, fft_sp_1d_c2c_direct and fft_sp_1d_c2c_4step_ecpy contained in library d:\ti\fftlib_3_1_0_0\packages\ti\fftlib\lib\fftlib.ae66. Why does this errors happen?
    Also i can't use fft_sp_plan_1d_c2c.c of FFTLIB 2.0, because of structures does not match. How can i use the library FFTLIB v3.1?

  • Michale,

    Can you also post your complete build log? Yes, the lib_smem_* functions are in the fftlib.ae66. I will try to find out why the unit test examples are not in the release.

    Regards,
    Garrett
  • Hello Garrett!

    Thank you for your help. I attached the log and the project. CCS v7.300019 is located in directory "D:\ti". Processor SDK RTOS С667x v04.01.00.06 is also located in the directory "D:\ti"

    2210.log.txt
    **** Build of configuration Debug for project fft_sp_1d_c2c_k1_66_LE_ELF ****
    
    "D:\\ti\\ccsv7\\utils\\bin\\gmake" -k all 
    gmake[1]: Entering directory 'D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/k1/fft_sp_1d_c2c_k1_66_LE_ELF/Debug'
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/nonmp/fcConfig.cfg'
    'Invoking: XDCtools'
    "D:/ti/xdctools_3_32_02_25_core/xs" --xdcpath="D:/ti/bios_6_46_05_55/packages;D:/ti/edma3_lld_2_12_05_29/packages;D:/ti/xdais_7_24_00_04/packages;D:/ti/xdais_7_24_00_04/examples;D:/ti/dsplib_c66x_3_4_0_0/packages;D:/ti/framework_components_3_40_02_07/packages;D:/ti/framework_components_3_40_02_07/examples;D:/ti/libarch_1_0_0_0/packages;D:/ti/pdk_c667x_2_0_7/packages;D:/ti/ccsv7/ccs_base;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C66 -p ti.platforms.evm6678 -r debug -c "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/nonmp/fcConfig.cfg"
    making package.mak (because of package.bld) ...
    generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
    configuring fcConfig.xe66 from package/cfg/fcConfig_pe66.cfg ...
    Override RMAN.maxAlgs = 1
    Setting to rman's functions 
    useModule Settings: 6600
    generating custom ti.sysbios library makefile ... 
    Auto-registering resource manager for EDMA3CHAN
    ********** GUNP Program.build.target.isa 66
    Inside EDMA3 RM getLibs
        will link with ti.sdo.edma3.rm:lib/c6678-evm/66/debug/edma3_lld_rm.ae66
    Starting build of library sources ...
    making D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/nonmp/src/sysbios/sysbios.ae66 ...
    gmake[1]: Entering directory `D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/nonmp/src/sysbios'
    gmake[1]: Nothing to be done for `all'.
    gmake[1]: Leaving directory `D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/nonmp/src/sysbios'
    Build of libraries done.
    cle66 package/cfg/fcConfig_pe66.c ...
    "D:/ti/framework_components_3_40_02_07/packages/ti/sdo/fc/edma3/edma3_config.h", line 253: warning: typedef name has already been declared (with same type)
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/nonmp/fcConfig.cfg'
    ' '
    gmake[1]: Leaving directory 'D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/k1/fft_sp_1d_c2c_k1_66_LE_ELF/Debug'
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_bit_rev_ii32_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_bit_rev_ii32_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_bit_rev_ii32_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_bit_rev_ii32_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_c6678_config.c'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_c6678_config.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_c6678_config.c"
    "D:/ti/framework_components_3_40_02_07/packages/ti/sdo/fc/edma3/edma3_config.h", line 253: warning #303-D: typedef name has already been declared (with same type)
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_c6678_config.c'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_common.c'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_common.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_common.c"
    "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_common.c", line 116: warning #225-D: function "printf" declared implicitly
    "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_common.c", line 117: warning #118-D: non-void function "fft_execute" should return a value
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft_common.c'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_large_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_large_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_large_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_large_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_miss_pipe_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_miss_pipe_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_miss_pipe_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_miss_pipe_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_rad_2p2_next_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_ro_f_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_rad_2p2_next_ro_f_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_ro_f_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_ro_f_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_sm1_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_rad_2p2_next_sm1_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_sm1_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_sm1_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_sm2_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_rad_2p2_next_sm2_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_sm2_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_rad_2p2_next_sm2_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_sp_1d_c2c_d.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c"
    "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c", line 77: warning #179-D: variable "ret_val" was declared but never referenced
    "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c", line 77: warning #179-D: variable "i" was declared but never referenced
    "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c", line 99: warning #179-D: variable "edmaState" was declared but never referenced
    "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c", line 105: warning #179-D: variable "ret_val" was declared but never referenced
    "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c", line 324: warning #515-D: a value of type "void *(*)(void)" cannot be assigned to an entity of type "void *(*)(void *, int)"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/fft_sp_1d_c2c/fft_sp_1d_c2c_d.c'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_sp_cmplx_notwid_br.c'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_sp_cmplx_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_sp_cmplx_notwid_br.c"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_sp_cmplx_notwid_br.c'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_sp_mixed_bs.c'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="fft_sp_mixed_bs.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_sp_mixed_bs.c"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/fft/fft_sp_mixed_bs.c'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_bit_rev_ii32_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="ifft_bit_rev_ii32_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_bit_rev_ii32_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_bit_rev_ii32_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_large_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="ifft_large_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_large_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_large_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="ifft_rad_2p2_next_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_ro_f_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="ifft_rad_2p2_next_ro_f_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_ro_f_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_ro_f_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_sm1_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="ifft_rad_2p2_next_sm1_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_sm1_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_sm1_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_sm2_notwid_br.asm'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="ifft_rad_2p2_next_sm2_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_sm2_notwid_br.asm"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_rad_2p2_next_sm2_notwid_br.asm'
    ' '
    'Building file: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_sp_cmplx_notwid_br.c'
    'Invoking: C6000 Compiler'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi --include_path="D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --include_path="../../../../../../../" --include_path="../../../../common" --include_path="../../../" --include_path="../../../../common/fft" --include_path="../../../../common/ifft" --include_path="../../../../common/nonmp" -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k --preproc_with_compile --preproc_dependency="ifft_sp_cmplx_notwid_br.d_raw" --cmd_file="configPkg/compiler.opt" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_sp_cmplx_notwid_br.c"
    'Finished building: D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/ifft/ifft_sp_cmplx_notwid_br.c'
    ' '
    'Building target: fft_sp_1d_c2c_k1_66_LE_ELF.out'
    'Invoking: C6000 Linker'
    "D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 --abi=eabi -g --define=LIB_RTOS --define=SOC_C6678 --define=ti_targets_elf_c66 --diag_wrap=off --display_error_number --diag_warning=225 --debug_software_pipeline --mem_model:data=far -k -z -m"fft_sp_1d_c2c_k1_66_LE_ELF.map" -i"d:/ti/pdk_c667x_2_0_7/packages/ti/csl/lib/c6678/c66/release/" -i"d:/ti/fftlib_3_1_0_0/packages/ti/fftlib/lib/" -i"D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/lib" -i"D:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --reread_libs --display_error_number --diag_wrap=off --warn_sections --xml_link_info="fft_sp_1d_c2c_k1_66_LE_ELF_linkInfo.xml" --rom_model -o "fft_sp_1d_c2c_k1_66_LE_ELF.out" "./fft_bit_rev_ii32_notwid_br.obj" "./fft_c6678_config.obj" "./fft_common.obj" "./fft_large_notwid_br.obj" "./fft_miss_pipe_notwid_br.obj" "./fft_rad_2p2_next_notwid_br.obj" "./fft_rad_2p2_next_ro_f_notwid_br.obj" "./fft_rad_2p2_next_sm1_notwid_br.obj" "./fft_rad_2p2_next_sm2_notwid_br.obj" "./fft_sp_1d_c2c_d.obj" "./fft_sp_cmplx_notwid_br.obj" "./fft_sp_mixed_bs.obj" "./ifft_bit_rev_ii32_notwid_br.obj" "./ifft_large_notwid_br.obj" "./ifft_rad_2p2_next_notwid_br.obj" "./ifft_rad_2p2_next_ro_f_notwid_br.obj" "./ifft_rad_2p2_next_sm1_notwid_br.obj" "./ifft_rad_2p2_next_sm2_notwid_br.obj" "./ifft_sp_cmplx_notwid_br.obj" "D:/ti/fftlib_3_1_0_0/packages/ti/fftlib/src/common/nonmp/lnk.cmd" -l"configPkg/linker.cmd" -lfftlib.ae66 -lti.csl.ae66 -lti.csl.intc.ae66 -llibc.a 
    <Linking>
    
     undefined          first referenced     
      symbol                in file          
     ---------          ----------------     
     fft_sp_plan_1d_c2c ./fft_sp_1d_c2c_d.obj
     lib_smem_falloc    ./fft_common.obj     
     lib_smem_finit     ./fft_common.obj     
     lib_smem_freset    ./fft_common.obj     
    
    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "fft_sp_1d_c2c_k1_66_LE_ELF.out" not built
    
    gmake: *** [fft_sp_1d_c2c_k1_66_LE_ELF.out] Error 1
    >> Compilation failure
    makefile:161: recipe for target 'fft_sp_1d_c2c_k1_66_LE_ELF.out' failed
    gmake: Target 'all' not remade because of errors.
    
    **** Build Finished ****
    

    fft_sp_1d_c2c.rar

  • Errors due to unresolved symbols lib_smem_falloc, lib_smem_finit, lib_smem_freset disappeared after adding of path to the Library Architecture and Framework.

    But the error due to unresolved symbol fft_sp_plan_1d_c2c still remains, although paths are present in CCS. Where is a source code of fft_sp_plan_1d_c2c function?

  • Michael,

    It appears the fft_sp_plan_1d_c2c( ) function is only available from FFTlib 2.0.2 and you can try to add its source code into your project. I am discussing with the team regarding the function declaration header file and missing implementation...

    Regards,
    Garrett
  • Hello Garrett!

    Thank you for your reply.

    I tried adding source code of fft_sp_plan_1d_c2c() to the project. The function fft_sp_plan_1d_c2c() calls the functions fft_sp_1d_c2c_direct() or fft_sp_1d_c2c_ecpy() or fft_sp_1d_c2c_4step_ecpy(), that are not included in the library FFTLIB v3.1.

    Also the structures declared in the file fft_common.h differ somewhat in the libraries FFTLIB v2.0 and FFTLIB v3.1, for example:

    /* FFT parameters FFTLIB v3.1 */
    struct {
    int N;
    fft_para_mix_bs_t para1; 
    float *in;
    float *out;
    float *tw;
    float *Bn;
    float *workbuf;
    }sp_1d_c2c_d;
    /* FFT parameters 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;

    Even if the parameters of the structure are correctly set, there are still no realizations of the functions fft_sp_1d_c2c_direct(), fft_sp_1d_c2c_ecpy() and fft_sp_1d_c2c_4step_ecpy().

    The file fft_sp_1d_c2c.c from the library FFTLIB v2.0 contains the source code of the functions fft_sp_1d_c2c_direct(), fft_sp_1d_c2c_ecpy() and fft_sp_1d_c2c_4step_ecpy(). These functions call functions from the FFTLIB that are in the directory packages\ti\fftlib\src\common\fft, such as fft_sp_cmplx_notwid_br(), fft_SPxSP_mixed_radix_c2c() etc.
    Files in the directory packages\ti\fftlib\src\common\fft do not differ for libraries FFTLIB v2.0 and FFTLIB v3.1.
    The only difference is in the file fft_dp_mixed_bs.c in the lines 390 - 392: in the library FFTLIB v3.1 there is a division of the result into M.
    Thus, FFTLIB v3.1 can not differ in speed and accuracy of calculations from FFTLIB v3.1. Then I will repeat my first question: "Why are there any calculations errors on one platform?".

    I also have more questions:

    1. Why i do not achieve the productivity stated in the document (Nissim Saban. MultiCore DSP vs GPUs)?
    2. Where is any document describing the functions of the library FFTLIB?
    3. What is the difference between the functions fft_sp_1d_c2c_direct(), fft_sp_1d_c2c_ecpy() and fft_sp_1d_c2c_4step_ecpy()?
    4. How to use FFTLIB v3.1? When there is a working version with examples and documentation?
    5. Which function calculates the FFT of maximum length (2048 x 2048)?
  • I started the project with FFTLIB v3.1. I filled the structure according to the function fft_sp_plan_1d_c2c() from FFTLIB v2.0. After that function fft_sp_cmplx_notwid_br() from FFTLIB v3.1 was called. The result is similar to  result obtained earlier with FFTLIB v2.0 :

    [C66xx_0] FFT memory buffers:
        Buffer    Size(bytes)    Alignment
           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	size= 1024
    max_diff = 0.006134	N = 1024	Cycle: 9538
    
    FFT memory buffers:
        Buffer    Size(bytes)    Alignment
           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	size= 2048
    max_diff = 0.026672	N = 2048	Cycle: 19000
    
    FFT memory buffers:
        Buffer    Size(bytes)    Alignment
           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	size= 4096
    max_diff = 0.034302	N = 4096	Cycle: 40427
    
    FFT memory buffers:
        Buffer    Size(bytes)    Alignment
           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	Cycle: 230581
    
    FFT memory buffers:
        Buffer    Size(bytes)    Alignment
           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	size= 16384
    max_diff = 11.515625	N = 16384	Cycle: 723321
    
    FFT memory buffers:
        Buffer    Size(bytes)    Alignment
           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	size= 32768
    max_diff = 35.089844	N = 32768	Cycle: 1830961
    
    FFT memory buffers:
        Buffer    Size(bytes)    Alignment
           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	size= 65536
    max_diff = 94.429688	N = 65536	Cycle: 4299141

    I attached the files of my project in CCS to the message.

    6443.fft_sp_1d_c2c.rar

    My questions are still relevant. Thank you.

  • Michael,

    I have submitted a request ticket for adding example CCS project in future FFTLIB release. Will import your project and see if I can reproduce the issue you observed.

    Regards,
    Garrett
  • Michael,

    I can reproduce the cycle number you measured, will work with the library team to get this sorted out.

    Regards,
    Garrett
  • Hello Garrett!

    Thank you for your answers. I found an article by Mounir Bahtat "Fast Enumeration-Based Modulo Scheduling Heuristic for VLIW Architectures". This article has the following statement:

    "We have generated an efficient implementation of an FFT (Fast Fourier Transform) algorithm using the described heuristic, slightly modified not to take into account the timeout limits. A 4k samples FFT was performed during 25780 cycles in 1 core of the TMS320C6678 (achieved II=8, MaxLive=12). This is about 10% gain in cycles compared to an implementable schedule achieved by SMS. Our FFT assembly-level code was used by TI (Texas Instruments) in their FFT library (FFTLIB)."

    But my result for 4k samples FFT using FFTLIB is 40427 cycles. What could be the reason?

  • I have created project without using the SYS/BIOS. FFT 4k calculation took 29637 cycles!

    My code is:

        t_start = _itoll(TSCH, TSCL);
        _miss_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_overhead;
        printf("\tFFTLIB: FFT size %d calculated cycles: %d\n\n", N, t_opt);

    where N = 4096.

    Data was placed in L2SRAM.

    My project is: FFT_4K.7z

     

    Why function fft_sp_cmplx_notwid_br(), written on C and that used assembler functions miss_pipe_notwid_br() and fft_rad_2p2_next_notwid_br() takes 40427 cycles?  It lasts 10K cycles per logic?

  • Hello Garrett!
    Could you measure the number of cycles? What are the results?
    An error in the calculations is due to the fact that in the FFTLIB the twidle factors are calculated iteratively directly in the calculation of ftf in a floating-point format.
    Please note that good performance is achieved for FFT up to 4,096 points. When calculating the FFT over 4096 points, the performance drops sharply: FFT4k - 40 427 cycles, FFT8k - 230 581 cycles.
    FFTLIB calculates of large order FFT reduces to the calculations of FFT4k and butterflies radix-2.
    I think it's more efficient to calculate fft by representing the input sequence with a matrix and calculating the fft first by rows and then by the columns.
    I still have more questions. The main question is how to achieve performance specified in Very Large FFT document?
  • Hi Garrett!
    Do you have results?
  • Michael,

    We have reached out the development team on this issue but they have indicated that there may be some delays due to loss of a key developer for this module. We appreciate your patience on this issue.

    Regards,
    Rahul
  • Hello Rahul! Hello Garrett!
    Since your last message, almost a month has passed. Do you have any information on FFTLIB?