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.

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文档里的速度慢

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

  • 最后发现问题了!

    在初始化6455的时候 将他的Cache 的大小设置为0了

    将cache的大小设置为32KB以后 程序运行就正常了