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.

[参考译文] TDA4VM:提高定制 avp4演示的处理速度

Guru**** 2328790 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1517576/tda4vm-improving-the-processing-speed-of-custom-avp4-demo

器件型号:TDA4VM

工具/软件:

我的 SDK 版本:RTOS  10.01.00.04

尊敬的 TI 专家:

我将根据"app_tidl_avp4"创建一个自定义应用、并进行了以下两项更改:

  1. 将显示输出更改为 SRV
  2. 将 TIDL 从 SEG 更改为 OD

这种变化导致了整个图的性能下降、现在大约为20fps。

GRAPH: custom_app_graph (#nodes =  11, #executions =  39722)
 NODE:       CAPTURE1:             capture_node: avg =   1622 usecs, min/max =    154 /  61714 usecs, #executions =      39722
 NODE:     VPAC_VISS1:                viss_node: avg =  18505 usecs, min/max =  17735 /  24338 usecs, #executions =      39722
 NODE:         MCU2-0:                aewb_node: avg =    455 usecs, min/max =    154 /  65242 usecs, #executions =      39722
 NODE:      VPAC_LDC1:                 ldc_node: avg =  16601 usecs, min/max =  13899 /  24016 usecs, #executions =      39722
 NODE:      VPAC_MSC2:              scaler_node: avg =  26454 usecs, min/max =  21934 /  33801 usecs, #executions =      39722
 NODE:          DSP-1:              PreProcNode: avg =   3554 usecs, min/max =   3328 /   4447 usecs, #executions =      39722
 NODE:       DSP_C7-1:                tidl_node: avg =  49816 usecs, min/max =  47580 /  54819 usecs, #executions =      39722
 NODE:          DSP-2:    DrawBoxDetectionsNode: avg =  14447 usecs, min/max =   8209 /  19117 usecs, #executions =      39722
 NODE:      VPAC_MSC1:              mosaic_node: avg =  16820 usecs, min/max =   3871 /  84152 usecs, #executions =      39722
 NODE:          MPU-0:          OpenGL_SRV_Node: avg =  15226 usecs, min/max =  11878 /  46502 usecs, #executions =      39722
 NODE:       DISPLAY1:              DisplayNode: avg =   8845 usecs, min/max =    106 /  33199 usecs, #executions =      39729

 PERF:           FILEIO: avg =      0 usecs, min/max = 4294967295 /      0 usecs, #executions =          0
 PERF:            TOTAL: avg =  49885 usecs, min/max =  32556 /  74620 usecs, #executions =      17449

 PERF:            TOTAL:   20. 4 FPS

我认为、通过将图形分为两个、一个用于 SRV 侧、一个用于 OD 侧、我可以提高性能。(下图中的红色和蓝色区域)

但将图形拆分为两并没有提高性能。

GRAPH: custom_app_graph1 (#nodes =   5, #executions =    296)
 NODE:       CAPTURE1:             capture_node: avg =  13394 usecs, min/max =    166 /  59766 usecs, #executions =        296
 NODE:     VPAC_VISS1:                viss_node: avg =  19128 usecs, min/max =  17962 /  20964 usecs, #executions =        296
 NODE:         MCU2-0:                aewb_node: avg =    310 usecs, min/max =    156 /   1371 usecs, #executions =        296
 NODE:          MPU-0:          OpenGL_SRV_Node: avg =  11470 usecs, min/max =  10603 /  44925 usecs, #executions =        296
 NODE:       DISPLAY1:              DisplayNode: avg =   9912 usecs, min/max =     89 /  16342 usecs, #executions =        296

GRAPH: custom_app_graph2 (#nodes =   6, #executions =    148)
 NODE:      VPAC_LDC1:                 ldc_node: avg =  14735 usecs, min/max =  13905 /  15450 usecs, #executions =        148
 NODE:      VPAC_MSC2:              scaler_node: avg =  23128 usecs, min/max =  20792 /  24294 usecs, #executions =        148
 NODE:          DSP-1:              PreProcNode: avg =   3243 usecs, min/max =   3108 /   3427 usecs, #executions =        148
 NODE:       DSP_C7-1:                tidl_node: avg =  45332 usecs, min/max =  41988 /  48336 usecs, #executions =        148
 NODE:          DSP-2:    DrawBoxDetectionsNode: avg =   7428 usecs, min/max =   7023 /  13685 usecs, #executions =        151
 NODE:      VPAC_MSC1:              mosaic_node: avg =   4696 usecs, min/max =   3857 /  29426 usecs, #executions =        151

 PERF:           FILEIO: avg =      0 usecs, min/max = 4294967295 /      0 usecs, #executions =          0
 PERF:            TOTAL: avg =  50167 usecs, min/max =     20 / 188239 usecs, #executions =        304

 PERF:            TOTAL:   19.93 FPS

我的目标是让 SRV 以30fps 运行、OD 以15fps 运行。 您能给我一些建议、我该如何实现这个目标吗?

此致、

Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Daigo、

    您能否分享您用于案例的模型? 此外、您是否可以共享您对模型(以及 SRV)所做的所有更改、以便我可以在我的端重新创建它?

    此致、

    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christina:

    我使用 SDK 中包含的模型。 换句话说、我使用的模型是从"app_tidl_od_cam"移植的、因此 cfg 文件规定要使用:

    # location of config
    tidl_config   /opt/vision_apps/test_data/psdkra/tidl_models/tidl_io_peele_300_1.bin
    
    # location of network
    tidl_network  /opt/vision_apps/test_data/psdkra/tidl_models/tidl_net_peele_300.bin

    请耐心等待、因为我将作为补丁准备我的所有更改。

    此致

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Christina:

    我附加了 一个 自定义 avp4演示的补丁。  我不熟悉 OpenVX 或者如何使用图形参数、因此双图形调度可能是错误的。 我最想实现的是将 SRV 保持在30fps、并且我希望检测以较低的频率异步运行。

    此致、

    Daigo

    e2e.ti.com/.../1780.custom_5F00_avp4.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    了解 Daigo。 感谢您分享更改和信息。 我将在我前进的过程中调查并让您了解最新情况。

    此致、

    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    Unknown 说:
    我的目标是让 SRV 以30fps 的速率运行、OD 以15fps 的速率运行。 您能给我一些建议、我如何才能实现这个目标?

    我将在 avp4演示中为此创建一个修补程序、并在星期四或之前将其分享给您。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    我希望有两个很好的示例、其中 SRV 和检测彼此异步运行。 我认为这对我的自定义应用程序创建有很大帮助。

    感谢您的合作。

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    是的、我理解您的用例、但我们不能使图形异步运行、替代方法是对交替帧排队、这样会产生15fps 的帧、但如果您希望第二个图形的帧具有不同的 fps、则应用程序应该具有使适当帧排队/出队以实现 fps 的逻辑。

    不管怎样,一旦你得到补丁15 fps 你会得到一个想法的其余。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    > 但我们不能使图形异步运行

    我不确定我是否理解正确、但这是排队/出队逻辑施加的限制吗? 我希望 SRV 保持至少30fps (无论 OD 性能如何)。

    无论哪种方式、我都会等待您的更新。  感谢您的合作。

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    应用 vision_apps 文件夹中的补丁、

    e2e.ti.com/.../avp4_5F00_15_5F00_30_5F00_fps.patch

    这将以30fps 的速率运行 srv、以15fps 的速率运行分割模型。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    感谢您的补丁!

    当然,你的补丁工作正常,我有一个更好的理解双 图形的排队/出队逻辑.

    在此基础上、我们将开始实施自定义应用。 感谢您的慷慨支持!

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    很抱歉有其他问题、

    不与此补丁直接相关、但为什么没有为 SRV 节点设置队列深度?

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    在演示中、srv 节点的输出未连接、因此未设置缓冲区深度。

    如果使用其输出到显示节点、则可以通过调用此函数来设置缓冲深度、

    tivxSetNodeParameterNumBufByIndex(obj->srvObj.node, 4, APP_BUFFER_Q_DEPTH);

    即使您没有设置缓冲深度、框架也会默认将缓冲深度设置为2。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    感谢您的回答。 我明白原因。

    我对管道的深度有点困惑。

    问题1: 我应该如何设计/自定义队列深度? (节点数? 处理时间?)

    问题2:  我的理解是否正确、即队列越深、处理越晚?

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    请您再提出一个问题。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    我创建了新线程。

    (+) TDA4VM:如何调整图形队列深度-处理器论坛-处理器- TI E2E 支持论坛

    令人遗憾的是、

    Daigo