TI中文支持网
TI专业的中文技术问题搜集分享网站

6678 复数矩阵相乘 耗时统计

工程师好,我们要进行资源评估,我跑C:\ti\dsplib_c66x_3_4_0_0\packages\ti\dsplib\src\DSPF_sp_mat_mul_gemm_cplx下的例程,在release下,优化级别选3,用TSCH和TSCL方式来统计16*16的矩阵A与16*16的矩阵B相乘的耗时,显示跑了127091个指令周期,相当于耗时0.127ms,不知道这种统计方法准确不准确

Shine:

TSCH, TSCL是以CPU clock计时的,可以用来统计指令执行周期数。

haotian chang:

回复 Shine:

工程师你好,我发现用2*2的两个复数矩阵相乘release下耗时2ns,64*64的两个复数矩阵相乘的release下耗时0.132s,不是按照乘加计算的比例增加的,是不是由于矩阵的维度过大不一样,一级缓存一下子装不下,一次计算不过来 ,隐含的有数据搬移的耗时,比如ddr到二级缓存中的搬移的耗时,二级缓存到一级缓存的耗时

Ryan BL:

回复 haotian chang:

理论上来讲,都可以优化到按运算量的比例增加,关键是看数据流程能否优化到这个样子,这里面的因素比较多,除了你说的可能的大块拆分成小块的拆分外以及后续的再次重组外,还有cache miss带来的stall,接口间调用代理的跳转延迟,使用RTOS后tick中断带来的中断上下文切换以及任务调度的OS消耗。
实际上,功底强的话,上述部分是可以规避/优化的,但是大矩阵无论如何都要进行内存交换,这个避免不了。
2ns下的2*2运算,仅仅是上述情况都不存在且cache完全覆盖下的使用内联指令并经并行优化+全寄存器缓存(即不仅中间运算数据,最初的数据输入和最终的运算结果同样保存在寄存器,否则单存的数据加载/存储都分别至少需要4个cycle,当然大矩阵可以使用并行执行抵消一部分)后的极端简单情况。

haotian chang:

回复 Ryan BL:

你好,我查到Ti工程师发表的论文,基于bios系统8核的大矩阵计算相乘的浮点计算能力,我能不能根据我的矩阵大小的规模,统计出乘加计算量,然后根据他给出该规模的方阵的GFLOPS能力,来进行我的资源评估

赞(0)
未经允许不得转载:TI中文支持网 » 6678 复数矩阵相乘 耗时统计
分享到: 更多 (0)