TI论坛
直播中

杨林

7年用户 196经验值
私信 关注
[问答]

C6455上使用 VLIB计算梯度图 速度远远慢于testreport里验证的速度的原因?

如题 在在自制的 C6455 板上跑 稀疏光流 目标跟踪算法
算法中用到了 如下的函数
VLIB_xyGradients(previousImage, gradx + width + 1, grady + width + 1, width, height-1);
testreposrt 中说平均计算一个点只用1个周期 但是在实验中 我发现 计算512 * 384 图像使用了大概300万个周期
函数中 previousImage 为原图 gradx , grady  为梯度图 这三个图像都放在L2中 都是8byte对齐 的 w = 512 h = 384
CPU主频为1GHz 使用 -o3 -none 编译指令 编译器 7.4.14 CCS5.5 VLIB 3.2.0.1
所有使用的这些都是比较新的,但是我的速度相比于VLIB提供的测试速度差很多 不知道是什么原因
难道还有什么地方需要设置或者增加的吗?
还有我使用的其他VLIB函数如VLIB_trackFeaturesLucasKanade_7x7也都比testreport文档里的速度慢

回帖(2)

杨林

2020-7-30 07:47:24
目前发现的问题是 在-o3 优化条件下 有时候生成的代码 是-o3 的速度 但是有时候再重新生成代码之后 即使没有修改程序 程序的速度也会变得和-o1 一样? 为什么会出现这样的现象? 还有 据说在开o3优化之后 编译器还是会生成一个没有流水线的程序版本 如何使得编译器只生成开启了流水线的程序?
举报

杨林

2020-7-30 08:01:23
引用: 饿了就吃的 发表于 2020-7-30 07:47
目前发现的问题是 在-o3 优化条件下 有时候生成的代码 是-o3 的速度 但是有时候再重新生成代码之后 即使没有修改程序 程序的速度也会变得和-o1 一样? 为什么会出现这样的现象? 还有 据说在开o3优化之后 编译器还是会生成一个没有流水线的程序版本 如何使得编译器只生成开启了流水线的程序? ...

最后发现问题了!
在初始化6455的时候 将他的Cache 的大小设置为0了
将cache的大小设置为32KB以后 程序运行就正常了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分