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.

[参考译文] AM5728:DSP 基准测试

Guru**** 2587345 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/634807/am5728-dsp-benchmarks

器件型号:AM5728

尊敬的 TI:

    在获取 AM5728上您的一个 DSP 库函数的已发布基准测试时、我们遇到一些问题。

    我已经附加了我们用于"定时"结果的基本 main.c 文件和 CMD 链接器文件、我们的测量结果大约为500万、与您在 DSPLIB_C66x_TestReport.html 中列出的 k市场化 相比、它是:

DSPF_sp_mat_mul_CpLx 通过 5/8*R1*C2*C1 +58/8*R1*C2 +100/8*R1 +30 不适用 672.

我们的测试用例使用256列和24行: 使用 上述公式、我们将24x24矩阵读作:

(5/8)*24*256*24+(58/8)*24*256+100/8*24+30=137034

然而、当我们运行下面相对简单的主函数时、我们回读4513445、这与137034有很大不同、因此我们需要澄清对比度的来源。

#include "DSPLib.h"
#include "c6x.h"

//帮助程序功能
静态__INLINE 超长时间宏(空)
{unsigned int tscl_val = TSCL;
 unsigned int TSCH_val = TSCH;
 返回_itoll (TSCH_val、tscl_val);}

#define array_size 24.
#define ANGAL_SIZE 256

/*这些是第一个乘法的变量*/
#pragma SET_DATA_SECTION ("MatrixMemory")
   //注意:采用此格式,以便可以轻松地循环浏览列
   float AconjT[array_size* angle_size* 2]、unT[array_size* array_size* 2]、mediatel[array_size* angle_size* 2];
   float A[array_size* angle_size* 2]、P[1*angle_size* 2];
#pragma SET_DATA_SECTION ()

int main (空)

   long long t_start、t_stop、t_开销、t_diff、t_first;

   int rowsUnT、colsUntrowsAconjT、colsAconjT、arraySize;
   int i;


   rowsUnT = array_size;
   colsUntrowsAconjT = array_size;
   colsAconjT = angle_size;

   arraySize = array_size;


   TSCL = 0;//通过写入 TSCL 来启动 CPU 定时器
   T_start = TimerMacro ();
   T_stop = TimerMacro ();
   T_开销= t_stop - t_start;


   T_start = TimerMacro ();

   //这将执行第一个乘法
   dSPF_sp_mat_mul_CpLx (&UNT[0]、rowsUnT、colsUntrowsAconjT、AconjT、colsAconjT、 中级);

   T_stop = TimerMacro ();
   T_first = t_stop - t_start;

   返回0;

我们添加到标准链接器 cmd 文件(AM57xx_C66)的唯一行是:

 MatrixMemory :> OCMC_RAM1,ALIG(4)

以放置矩阵存储器。

您能不能提出我们为什么看到时间安排存在如此大的差异?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rob、
    您能否确认什么是 DSP 高速缓存配置?
    谢谢
    Jian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不熟悉此部件的高速缓存配置、如果您告诉我在哪里查找您希望知道我可以提供的设置、  您希望我提供哪些缓存设置?

    由于我没有自行设置它们、因此它们可能处于默认值。

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

    谢谢、问题确实是高速缓存配置。  查看之后、未为关联的 L3存储器设置 MAR64位、因此默认情况下不可缓存。

    将 MAR64位设置为可高速缓存后、它将其移至 DSP 高速缓存中、我们能够为适当大小的矩阵获得已发布的周期数(考虑到 L1存储器的32k 限制)

    非常感谢!

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

    Rob、

    很高兴您能观察已发布的性能 基准测试。 感谢您的更新。 我将关闭 TT。

    此致

    Jian