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.

dm8168 移植到DSP内核中的算法程序优化



您好,

      我使用8168的DVRRDK4.0开发包,将我的图像处理程序移植到DSP内核中执行,但是效率很慢,需要进一步优化,想请问一下,除了自己算法级别的优化,并使用DMA方式替换memcpy的地方,还有没有其它的方式呢?在这里是否存在开多线程的概念呢?

     非常期待大家的指教,谢谢!

  • DM8168中只有一个DSP,所以多线程没有什么实际意义。要想让算法跑起来,还是要主要靠对算法的优化。

  • 你好,

          首先谢谢你的回复,我还想再咨询一些问题:

    1、关于你说的这里面只有一个DSP,所以多线程没有什么实际意义。这是基于如果是多个CPU的话,开多个线程运行在不同CPU上以提高效率的思路是吗?那么,针对我的算法程序,由于是一个循环体中对图像每个点做的是同样的操作,能否采用多线程将它们分为几个独立部分运行,对速度是否会有很大改善呢?

    2、我现在的算法执行时间150ms/一帧图像,算法上已经进行了一些优化,最耗时的地方是一个300万次的循环,循环体中要做几次取值、赋值运算;现在我已经进行了循环展开。关于算法优化,你还能给些建议吗?

          非常感谢!

  • DSP上的程序如果优化得比较好的话,速度可以几倍,几十倍地提升,但是这需要对DSP的架构有一定的理解,而且涉及到很多细节的优化技巧,需要针对具体的算法情况进行分析。如果你不介意地话,可以把你需要优化的那个核心循环贴出来,我可以帮你分析一下。但是我需要最原始的代码,而不是你优化过的代码。

  • 你好,

         非常谢谢你。方便留一下你的QQ号联系吗?

  • 你这个算法处理一帧1920x1080图像的理论最大速度(不考虑memory访问延迟)是 2.527 ms,还有很大的提升空间!

  • 你好,请问下如何在DM8168上做算法移植啊?我是直接在ALGLink里面做了一个很简单的程序,都运行不了,求指导下?

  • 你好,

         你是在alglink的哪里加的你的算法呢?

            // do SW OSD
                if (pObj->createArgs.enableOSDAlg)
                {

                    AlgLink_OsdalgProcessFrame(&pObj->osdAlg, pFrame);
                }

    可以在这个AlgLink_OsdalgProcessFrame();函数中添加自己的算法,或者自己定义一个类似的函数。

  • 你好,Ali Wang,看到了你的帖子,和我现在的困惑一样,我现在做一个人脸识别的算法,在DSP里根本就跑不起来,非常慢。

    我觉得算法也不是很复杂啊,在6467上运行的很流畅。

    你现在DSP核上的算法效率如何了? 算法执行慢是跟DDR memory 的读取有关系的吧  ?

    谢谢你的关注。