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.

[参考译文] PROCESSOR-SDK-J784S4:[J784S4 | TIDL 10.01] C7 DSP TopK 运算符比 CPU 慢

Guru**** 2581625 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1572386/processor-sdk-j784s4-j784s4-tidl-10-01-c7-dsp-topk-operator-slower-than-cpu

部件号:PROCESSOR-SDK-J784S4


工具/软件:

您好:

我正在使用 J784S4 器件 RTOS SDK 10_01_00_04 TIDL 10_01_00_01 。 我使用的 ONNX 版本是 1.15.0

我正在使用 TI SDK 中提供的顶层实现、无需任何修改

在我的一个模型中、我有一个 Topk 带有输入形状float32[1,50,7168,1]和的运算符 K= 300 。 运行推理时、我测量了以下结果:

  • 在 CPU 上: 8.13ms

  • 在 C7 DSP 上: >1 秒

为了进一步研究,我构建了一个小得多的测试模型,只包含一个输入形状float32[1,1,100,1]和的 TopK 节点 K= 30 .(你可以找到这个模型 heree2e.ti.com/.../1665.topk_5F00_model.zip )对于这种情况,我观察到:

  • 在 CPU 上: 0.10ms

  • 在 C7 DSP 上: 0.91ms

同样、C7 的推理时间明显高于 CPU、这与我预期的情况相反。

您能否帮助我了解为什么 C7 DSP 的性能低于 TopK 操作员的 CPU? 此行为是否与 SDK 中的操作员实现相关?

您是否也有任何关于改进 C7 上 TopK 性能的建议或解决方案?

提前感谢您。

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

    尊敬的 Ghassen:

    您如何测量推理时间?  它确实在 C7x 上运行吗?  我之所以提出这个问题、是因为 C7x 比大多数 PC CPU 快~30。

    此致、

    Chris

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

    您好 Chris、

    是的、我也 很惊讶 、因为 C7 应该比 CPU 快。
    我正在使用 get_TI_benchmark_data 获取 推理时间。


    您能否帮助我了解为什么 C7 DSP 的性能低于 TopK 操作员的 CPU?

    您可以使用我的模型来检查推理时间。

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

    尊敬的 Ghassen:

    看看您的模型、我认为这不是有效的测试。  这是一个单层模型、所占用的时间是从 ARM 向 C7x 移动数据、而不是在 TopK 的执行过程中。  更好的测试是使用更多的层或加载模型并在一个循环中运行 1000 次。  我运行了这个函数、单帧推理时间为 0.00033 秒、即 2987.225799 FPS。

    修补程序版本  模型  总推理时间 1000 个周期 (s)  单帧推理 (ms)  FPS
    10.01.04.00 topk_model.onnx 0.334759. 0.000335 2987.2258.

    此致、

    Chris

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

    您好 Chris、

    感谢您的回复和分享您的测量结果。

    根据您的结果、运行模型 1000 次可在 0.334 秒内处理大约 100,000 个元素(每个推理≈0.00033 秒)。

    基于此、对于具有大约 358,400 个元素[1、50,7168、1]的原始模型、预期时间大约为 1 秒、这与我在 C7x 上观察到的结果一致。

    这表明、我看到的性能差异不仅与测量设置有关、还可能与在 C7x 上实现或并行化 TopK 运算符的方式有关。

    您能否确认此解释是否正确?
    对于提高 C7x 上的 TopK 性能、是否有任何已知限制或建议?

    再次感谢您的帮助和澄清。

    此致、

    Ghassen

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

    尊敬的 Ghassen:

    TopK 中的修复程序在 11.1 中完成。  执行 11.1 测试可能是最简单的尝试方法。   

    此致、

    Chris