本人使用的是594MHZ的DM6437。
我使用了VLIB中的混合高斯建模API VLIB_mixtureOfGaussiansS32()函数,处理180*144尺寸的耗时为14ms,处理320*288尺寸相应的耗时为56ms,与文档提供的39.13 cycles/pixel存在很大差距,按照这个计算处理320*288耗时仅为7ms左右,与我实测的耗时相差了8倍。怎么有这么大的差距,有做过的同仁们给点意见意见?。
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.
本人使用的是594MHZ的DM6437。
我使用了VLIB中的混合高斯建模API VLIB_mixtureOfGaussiansS32()函数,处理180*144尺寸的耗时为14ms,处理320*288尺寸相应的耗时为56ms,与文档提供的39.13 cycles/pixel存在很大差距,按照这个计算处理320*288耗时仅为7ms左右,与我实测的耗时相差了8倍。怎么有这么大的差距,有做过的同仁们给点意见意见?。
运算速度与程序存放位置(l1p或ddr),数据存放位置,有很大关系。TI测试时估计用的是小数据,全在内部cache中完成,肯定会快一些。
均值与方差的更新率,主要是对环境的适应快慢,如果大对环境变化就很灵敏,小就很慢,如果太小环境又在不断地变化,稳定的模型都建立不起来。
文档中的Benchmarks描述的是在on-chip memory的测试结果。
On-chip memory performance has been measured as 39.13 cycles/pixel
下面有几点提高优化性能的建议,希望可以帮到你:
1. 建议你将整幅图像数据,分成若干的行,在L2 RAM 中开辟若干buffer,使用EDMA以及ping-pong机制,可以使双buffer或者是三buffer,尽量将处理的数据放在L2 RAM中。
2.修改MAP文件,将整个VIB库放到L2 RAM中,或者是函数级别的,将关联的函数全部分配到L2 RAM中,提高L2P的命中几率。
3.合理分配L2 RAM 以及L2 CACHE 的大小。
4.优化是一个循序渐进的过程,建议结合每次的profile数据,进行分析。
5.由于你使用的是TI的优化算法库,故性能的开销一般会集中在DATA STALL 或者是 INSTRUCT STALL, 这个需要从你的软件设计框架或者资源分配的角度着手。