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

同样的算法在C66X上的运算速度比C674x慢

请教大家:

      我们有两个开发板分别使用DM8148(DSP为C674X)与TDA2X(DSP为C66X),在其DSP上运行同样的算法,发现C674X比C66X要快。两个扳子所使用的DD主频都是533,DSP主频都是750。请教可能是什么原因?

Shine:

有具体数值吗?如果算法放在片上跑呢?

liuke liuke:

回复 Shine:

非常感谢您的回复:
在DM8148上算法时间为14ms,在TDA2X上时间为18ms。我们认为C66x的性能应该远比C674X要好很多才对,一直没找到原因。期待您的回复。
编译选项都是一样的:compiler option -c -qq -pdsw225 -mv6600 –abi=elfabi -mo -eo.oe66 -ea.se66 -ms –embed_inline_assembly –symdebug:dwarf -O3 –keep_asm

以下是我们的测试代码:

#define MAXV(a,b)((a>b)?(a):(b))

#define MINV(a,b)((a<b)?(a):(b))

typedef unsigned char u8;

int LneDet_MorphEroX(const u8 *SrcImg,u8 *DstImg,const int Wid,const int Hei,const int MorphSizeV,const int HeiStart,const int HeiEnd,const float k1,const float k2)
{intDelta,midSize;intMV_i,MV_j,MV_k;intgray_curr,gray_min,midL,midR;
for (MV_i=HeiStart;MV_i<HeiEnd;MV_i++){midSize=MorphSizeV/k1 – (HeiEnd-MV_i)*k2/((HeiEnd-HeiStart))*MorphSizeV;
Delta=MAXV(1,midSize);
for (MV_j=0;MV_j<Wid;MV_j++){gray_min=0xff;
midL=MAXV(0,(MV_j-Delta));
midR=MINV((Wid-1),(MV_j+Delta));
for(MV_k=midL;MV_k<=midR;MV_k+=2){gray_curr = *(SrcImg+MV_i*Wid+MV_k);gray_min=MINV(gray_min,gray_curr);gray_curr = *(SrcImg+MV_i*Wid+MV_k+1);gray_min=MINV(gray_min,gray_curr);
}
*(DstImg+MV_i*Wid+MV_j)=gray_min;}}
return 1;
}

Shine:

回复 liuke liuke:

算法放在哪里跑的?片上RAM还是DDR?

liuke liuke:

回复 Shine:

都是在DDR里的

liuke liuke:

回复 Shine:

事了下降算法放在L2中,效果是一样的

liuke liuke:

回复 Shine:

试了下,将算法放在L2中,效果是一样的。

Shine:

回复 liuke liuke:

请参考下面的代码优化资料。
e2echina.ti.com/…/64313

liuke liuke:

回复 Shine:

非常感谢您的回复,我们的算法是由第三方提供的,没有足够的精力对所有的算法进行优化。我们想请教一下,在对算法的代码没有任何优化的情况下,对于相同DDR与DSP主频的情况下,C66X是否也该比C674X运算的结果要快很多,至少不应该慢?

Shine:

回复 liuke liuke:

同样的主频,至少应该速度差不多。下面是TI DSP内核的benchmark。
www.ti.com.cn/…/core-benchmarks.html

liuke liuke:

回复 Shine:

您好:

    我们使用仿真器在C6678上进行了测试,程序和数据均放在片上RAM,发现1GHZ主频,-O3优化的情况下仍旧耗时12.6ms。而同样的算法在dm8148的750MHZ,c674x上耗时为14ms,而且数据还放在DDR里。这样折算下来,仍旧是C674x的效率要高一些,这与给出的benchmark不太一致,我们想请教这可能是什么原因导致的?

一下为我们的测试记录:

1 [C6678, 1000MHZ,指令L2 RAM,数据L3 RAM]: 12.6ms2 [TDA2X-C66x,750MHZ,指令L2 RAM,数据DDR-533MHZ]: 17.5ms3 [TDA2X-C66x,600MHZ,指令L2 RAM,数据DDR-533MHZ]: 21.8ms4 [DM8148-C674X,750MHZ,指令DDR-533MHZ,数据DDR-533MHZ]:14ms

赞(0)
未经允许不得转载:TI中文支持网 » 同样的算法在C66X上的运算速度比C674x慢
分享到: 更多 (0)