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.

[参考译文] SK-AM62A-LP:TIDL RT 初始化不稳定

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1642338/sk-am62a-lp-unstable-tidl-rt-initialization

器件型号: SK-AM62A-LP

大家好、我的 SDK 版本是 11_01_07_05。

我们选择 tidl_RT 来运行我们的生产模型、因为它基于您的一个 yolox 示例并完全卸载到 C7 加速器。

现在、我在调试时遇到了奇怪的初始化问题。 我通常只需在 CLI 中使用 Ctrl+c 来终止该过程、或在 VS Code 中使用 Shift+F5 来终止该过程。

几次运行后、它停止初始化、  
有一个错误,我现在记不清,因为在最近一次代码更改后,应用程序只能运行一次。

它要么在 TIDLRT_CREATE() 调用中挂起、最后一个日志如下所示:
 6330.36574 s: vx_zone_info:[tivxInitLocal:202]初始化完成!!!
 6330.365453 s: vx_zone_info:全局禁用 vx_zone_info

或者显示错误:

futex 功能返回一个意外的错误代码、并且 TIDLRT_create() 返回一个空句柄。

我将尝试为您重述第一个错误。 它通常在应用程序运行大约 5 次时开始出现。

仅重新启动有助于重置此设置。 是否有一些后台进程可以终止或取消初始化 tidlrt hande、或者我需要重置驱动程序或类似的东西。

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

    UPD:我回滚了今天的更改、并且能够重新报告错误。 它发生在第 7 次运行(以前的运行工作良好)

    7310.580709 s:vx_zone_info:[tivxInitLocal:202]初始化完成!!!
    7310.581712 s:vx_zone_info:全局禁用 vx_zone_info
    7310.654628 s:vx_zone_error:[ownContextSendCmd:1001]命令 ack 消息返回失败 cmd_status:–1
    7310.654700 s:vx_zone_error:[ownNodeKernelInit:704]针对节点 TIDLNode 的目标内核、TIVx_CMD_NODE_CREATE 失败
    7310.654745 s:vx_zone_error:[ownNodeKernelInit:705]请确保已为此内核注册目标回调
    7310.654778 s:vx_zone_error:[ownNodeKernelInit:706]如果目标回调已注册、请确保此内核的创建回调中没有发生错误
    7310.654813 s:vx_zone_error:[ownGraphNodeKernelInit:793]节点 0 的内核初始化、kernel com.ti.tidl:1:3 ...失败!!!
    7310.654969 s:vx_zone_error:[ TIDL subgraph strip_8 ]节点内核初始化失败
    7310.655041 s:vx_zone_error:[ TIDL 子图 STRIDE_8 ]图形验证失败

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

    尊敬的 Stanislav:

    您能尝试复位 C7x 内核吗? 您可以使用 Remoteproc 执行此操作:

    echo stop > /sys/class/remoteproc/remoteproc0/state
    echo start > /sys/class/remoteproc/remoteproc0/state

    如果这不起作用、请在后台运行以下命令、然后运行您的应用程序。 这应该提供更详细的日志记录、可能有助于指向正确的方向。

    /opt/vx_app_arm_remote_log.out &

    此致、
    Jay

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

    你好、杰伊!

    这些都是有用的事情要知道,谢谢。 日志确实显示内存分配失败。

    [C7x_1 ] 2421.918127 s:vx_zone_error:[tivxihighVisionAllocMem:194]无法分配内存记录 15 @空间= 17、大小= 8964480!!
    [C7x_1] 2421.918166 s:vx_zone_error:[tivxspiVisionCreate:358] tivxspiVisionAllocMem 失败
    [C7x_1 ] 2421.918199 s:vx_zone_error:[tivxKernelTIDLCreate:1131] tivxihVisionCreate 返回 NULL

    如果我使用您提供的命令重置 C7x、此问题确实会得到解决。

    现在的问题是 — 为什么内存映射在应用退出时会持续存在? 我可以在每次启动调试会话时自动运行复位、没有问题。 但是、我想了解为什么发生这种情况是为了避免量产版本中出现潜在问题。

    另外、futex/hang 的事情只是我弄乱了输出张量内存分配、所以它是不相关的。

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

    尊敬的 Stanislav:

    该问题在于 TIDL 内核没有正确取消初始化。 您能解释一下什么是应用吗? 您是否使用此二进制文件: TI_DEVICE_armv8_test_dl_algo_host_rt.out 或者您是否编写自己的应用程序?

    在第一种情况下、Ctrl+C 的信号处理程序不存在于 SDK 11.1 中、这是预期结果。 但是、一旦指定的迭代次数完成、它将正确地取消初始化所有内容。

    如果您要编写自己的应用程序、则需要 TIDLRT_delete  TIDLRT_freeSharedMem 在信号处理程序中为 Ctrl+C 调用和

    此致、
    Jay