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.

[参考译文] TMS320C6748:剂量 C674x DSPLIB FFT 基准取决于参数 MAXN?

Guru**** 2555630 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/608837/tms320c6748-dose-c674x-dsplib-fft-benchmark-depend-on-a-parameter-maxn

器件型号:TMS320C6748

您好、香榭丽舍

我在 LCDKC6748上获得了以下 C674x DSPLib FFT 基准。  结果似乎取决于 DSPF_sp_fftSPxSP_D.C.中的参数 MAXN
是这样吗?  对于基准测试、我还应该做些什么吗?

 o 情况1:MAXN 设置为256 (默认值)

   DSPF_sp_fftSPxSP   Iter#:1   结果成功   N = 8    基数= 2   natc:283   optC:171
   DSPF_sp_fftSPxSP   Iter#:2   结果成功   N = 16   基数= 4   natc:388   optC:188
   DSPF_sp_fftSPxSP   Iter#:3   结果成功   N = 32   基数= 2   natc:891   optC:342
   DSPF_sp_fftSPxSP   Iter#:4   结果成功   N = 64   基数= 4   natc:1635   optC:538
   DSPF_sp_fftSPxSP   Iter#:5   结果成功   N = 128   基数= 2   natc:4122   optC:1221
   DSPF_sp_fftSPxSP   Iter#:6   结果成功   N = 256   基数= 4   natc:8140   optC:2239

 o 案例2:MAXN 设置为512

   DSPF_sp_fftSPxSP   Iter#:1   结果成功   N = 8    基数= 2   natc:297    optC:187
   DSPF_sp_fftSPxSP   Iter#:2   结果成功   N = 16   基数= 4   natc:387    optC:188
   DSPF_sp_fftSPxSP   Iter#:3   结果成功   N = 32   基数= 2   natc:891    optC:342
   DSPF_sp_fftSPxSP   Iter#:4   结果成功   N = 64   基数= 4   natc:1635   optC:538
   DSPF_sp_fftSPxSP   Iter#:5   结果成功   N = 128   基数= 2   natc:4122   optC:1221
   DSPF_sp_fftSPxSP   Iter#:6   结果成功   N = 256   基数= 4   natc:8140   optC:2239
   DSPF_sp_fftSPxSP   Iter#:7   结果成功   N = 512   基数= 2   natc:20099   optC:5358

 o 案例3:MAXN 设置为1024

   DSPF_sp_fftSPxSP   Iter#:1   结果成功   N = 8     基数= 2   natc:306    optC:191
   DSPF_sp_fftSPxSP   Iter#:2   结果成功   N = 16    基数= 4   natc:387    optC:188
   DSPF_sp_fftSPxSP   Iter#:3   结果成功   N = 32    基数= 2   natc:890    optC:343
   DSPF_sp_fftSPxSP   Iter#:4   结果成功   N = 64    基数= 4   natc:1637   optC:538
   DSPF_sp_fftSPxSP   Iter#:5   结果成功   N = 128   基数= 2   natc:4169   optC:1294
   DSPF_sp_fftSPxSP   Iter#:6   结果成功   N = 256   基数= 4   natc:8262   optC:2425
   DSPF_sp_fftSPxSP   Iter#:7   结果成功   N = 512   基数= 2   natc:20328   操作 C:5667
   DSPF_sp_fftSPxSP   Iter#:8   结果成功   N = 1024   基数= 4   natc:40677   optC:10976

 o 案例4:MAXN 设置为2048


   DSPF_sp_fftSPxSP   Iter#:1   结果成功   N = 8     基数= 2   natc:301    optC:191
   DSPF_sp_fftSPxSP   Iter#:2   结果成功   N = 16    基数= 4   natc:387    optC:188
   DSPF_sp_fftSPxSP   Iter#:3   结果成功   N = 32    基数= 2   natc:900    optC:343
   DSPF_sp_fftSPxSP   Iter#:4   结果成功   N = 64    基数= 4   natc:1669   optC:598
   DSPF_sp_fftSPxSP   Iter#:5   结果成功   N = 128   基数= 2   natc:4271   optC:1411
   DSPF_sp_fftSPxSP   Iter#:6   结果成功   N = 256   基数= 4   natc:8384   optC:2711
   DSPF_sp_fftSPxSP   Iter#:7   结果成功   N = 512   基数= 2   natc:20724   optC:6429
   DSPF_sp_fftSPxSP   Iter#:8   结果成功   N = 1024   基数= 4   natc:41544   optC:12425
   DSPF_sp_fftSPxSP   Iter#:9   结果成功   N = 2048   基数= 2   natc:98854   optC:28673

下面是我的工具和设置。

 - C674x DSPLIB:v3.4.0.0
 CCS        :v7.2.0.00012
 -CGTools    :v7.4.21

 L2:256KB SRAM
 - L1P: 32KB 高速缓存
 - L1D: 32KB 高速缓存

 -构建配置:发布

我附加了 cmd 文件。

/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *

-c

堆 0x1000
-stack 0x1000

-lc:/ti/dsplib_c674x_3_4_0_0/packages/ti/dsplib/lib/dsplib.lib
-lc:/ti/dsplib_c674x_3_4_0_0/packages/ti/dsplib/lib/dsplib_cn.lib

/*模块 MEM */
存储器

  L2SRAM (rwx)    :origin = 0x800000, len = 0x40000


部分


   内核:{
     *。obj (.text:optimized){size (_kernel_size)}
   }

   .text:      load >> L2SRAM
   .text:触摸:加载>> L2SRAM
   
   组(近_DP)
   {
   .neardata
   rodata
   .bss
   }加载> L2SRAM
  
   far:       load >> L2SRAM
   .fardata:   load >> L2SRAM
   .data:      load >> L2SRAM
   .switch:    load >> L2SRAM
   .stack:     加载> L2SRAM
   .args:      load > L2SRAM align = 0x4、fill = 0{_argsize = 0x200;}
   .sysmem:    加载> L2SRAM
   .cinit:     加载> L2SRAM
   .const:     load > L2SRAM start (const_start) size (const_size)
   .pinit:     加载> L2SRAM
   .cio:       load >> L2SRAM
   xdc.meta:   load >> L2SRAM、type = copy
   init_array:load > L2SRAM


/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *

此致、
J-Breeze

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

    我已要求工厂团队查看这一点。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、MAXN 用于确定基准测试将运行多少次迭代。 在最终迭代中、它使用 MAXN 值作为输入样本数来计算复数 FFT。 您提到的用于在此平台上获取基准测试标记的大多数更新都是准确的。 为了获得最佳的基准测试结果、数据和代码应放置在 L2中。

    请注意、对于32K 和64K 等较高的 MAXN 值、数据、代码和 Twiddle 因子并不都适合 L2存储器、因此您需要将一些数据或代码段移动到 mDDR/DDR (外部存储器) 和启用高速缓存、但数据和代码访问时间会更高、因此这会对基准产生一些影响。

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

    您好!

    很抱歉、我的问题不够清晰。  我的问题是、optC 基准测试结果的数量似乎取决于如下所示的参数 MAXN。
    是这样吗?

     MAXN = 256 :N = 256 optC:2239
     MAXN = 512 :N = 256 optC:2239
     MAXN = 1024:N = 256 optC:2425
     MAXN = 2048:N = 256 optC:2711

     MAXN = 512 :N = 512 optC:5358
     MAXN = 1024:N = 512 optC:5667
     MAXN = 2048:N = 512 optC:6429

    您可以再次查看吗?

    此致、
    J-Breeze

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

    当所有程序和数据都加载到 L2 SRAM 中时、唯一会影响从一个通道到另一个通道运行的东西是 L1高速缓存。 由于程序大小较小、L1P 不太可能成为问题、但请检查.text 空间的总大小、以确认该大小。

    数字变化的最可能原因是、通过增加 MAXN、您可以增加正在使用的几个缓冲区之间的距离。 L1D 是一种2路组关联缓存、因此、如果将两组高达16KB 的数据恰好放置在正确的位置、它可以轻松处理这两组数据。

    基准测试是一种显示您可以期望的性能的好方法。 如果这些数字看起来适合您需要运行的大小 FFT、那么您将努力改进该 FFT。 我认为,通过尝试分析和优化一个广义基准的不同迭代,没有什么可获得的好处。 但是、如果您在您的应用中实施 FFT、并且您的数字接近较高的 optC 结果、那么您就会知道您可以对其进行优化。

    如果我可以正确地回忆、《高速缓存用户指南》对高速缓存访问问题的详细信息以及您可以采取哪些措施来改进算法的运行方式进行了一些有用的讨论。

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

    您好 RandyP、

    感谢你的建议。  我将看一下 U/G

    此致、
    J-Breeze