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.

[参考译文] TDA4VH-Q1:J784S4/TIDLRT_create—如何根据子图确定 DMA 共享存储器消耗?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1647753/tda4vh-q1-j784s4-tidlrt_create-how-is-dma-shared-memory-consumption-determined-per-subgraph

器件型号: TDA4VH-Q1

我们正在 J784S4 上运行多个 TIDL 推理网络、并一直在测量每个 TIDLRT_create () 调用的 DMA 共享内存占用空间。
我们 在每次调用之前和之后立即对/sys/kernel/debug/dma_buf/bufinfo 进行快照。 (请参阅下文)  

1.什么决定了分配的 DMA 共享内存量
   给定子图的 TIDLRT_create()? 它是由模型驱动的
   权重、激活缓冲区大小或其他因素?
  
 2.是否有办法预测或计算 shmem 要求
   调用 TIDLRT_create() 之前的子图—例如
   net.bin 文件还是任何编译时工件?

 3.我们想优化 DMA 共享内存分配,是否有办法降低 TIDLRT_CREATE() 同构的大小?

  Point                              DMA objects    Total (MB)
  ---------------------------------  -----------    ----------
  Before first TIDLRT_create             168          384
  After last TIDLRT_create (16 calls)    478          507
  Delta                                 +310         +123
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    对延迟回复表示歉意。 我们正在对此进行研究、并将很快更新。

    此致、

    Christina

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

    您好:

    以下问题的答案:

    1. 由 TIDLRT_CREATE() 分配的 DMA 共享内存容量将受到多个因素的影响。 它主要由模型权重和编译器元数据驱动、其大小在编译时已知、但也会受到从头开始/激活缓冲区的影响、这些缓冲区的大小在运行时确定。  

    2. 在调用 TIDLRT_create () 之前,我们没有记录下来的公式或工具来预测 tidl_net.bin 的共享内存占用量,但您可以得到一些粗略的指标。 例如、tidl_net.bin 和 tidl_io_1.bin 的文件大小提供权重和 IO 描述符内存、但这不包括增加总数的运行时激活缓冲区。

    3. 对于运行时优化、 如果尚未使用 releaseIOTensorsAtCreate、则可以使用该工具。 启用后、该选项会在 TIDLRT_CREATE () 期间尽早释放输入/输出张量、而不是在 TIDLRT_INVOKE () 之前保留它们、从而减少 DDR 占用空间(请参阅 TIDL doxygen) 。 当然、也可以选择模型级优化、使用 int8 进行量化而不是混合精度来减少权重存储器、优化模型输入以接受 8 位 YUV 直接减少 I/O 缓冲器大小等。

    如果您还没有了解以下内容、我还建议您查看该应用手册: 为 TIDL 使用情况分配内存、尤其是 C7xMMA DDR 使用情况分析与优化一节。

    此致、

    Josh