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:与 TIDL 执行提供程序连续运行多个 ORT::Session 时发生内存泄漏

Guru**** 2457760 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1455504/processor-sdk-j784s4-memory-leak-when-running-multiple-ort-session-consecutively-with-tidl-execution-provider

器件型号:PROCESSOR-SDK-J784S4
主题中讨论的其他器件:TDA4VH

工具与软件:

您好!

我们发现、在 TDA4上连续创建多个 ONNX 运行时会话(将 TIDL 设置为执行提供程序)时、该进程的内存消耗不断增加。

当在 TDA4上连续运行多个大型网络时、此问题会导致内存耗尽。

以下代码是演示它的示例:我们创建了会话10次安全时间。

ps1:请注意,要查看泄漏,我们不需要运行()会话。 仅创建会话对象就足够了。

PS2:另请注意、当使用默认的 ONNX 运行时 CPU 提供程序时、不会发生这种情况。

我提供了 Massif 工具输出的图像来说明内存消耗和泄漏来源。

这是在此处找到的以下错误的一个介绍: 链接、但在此处使用 TDA4VH 和  

使用 SDK 09.02.00.05和以下补丁:

  1. c7x-Mma-tidl_j784s4_10_00_05_00
  2. mmalib_obj_C7120_10_00_00_09



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

    您好!

    大部分团队成员都在度假。 请预计会延迟响应。

    此致、

    基尔西  

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

    你(们)好

    我希望你有一个美好的假期!

    此事是我们的高度优先事项、我们非常重视您的意见、以帮助公司取得进步。

    谢谢

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

    您好!

    PS1:请注意、要查看泄漏、我们不需要运行会话()。 仅创建会话对象就足够了。

       创建会话后、哪些存储器以及您如何进行性能评测?


    此致、

    Anshu

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

    Im 使用此处提供的相同测试应用: 链接

    以及以下工具:

    valgrind --tool=massif --massif-out-file=massif_vd.out ./test_app

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

    添加了 Jira TIDL-7166以进行跟踪。

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

    尊敬的 Amitai:

    我正在尝试调试此线程、希望您能提供一些见解。   我有随附的示例代码、我将从该代码开始。  这仍然正确、还是自9.2以来更新过?   是否有针对此构建的 makefile 和/或有关如何构建此构建的说明?

    #include
    #include

    #include
    #include
    #include

    #define ONNX_PATH "/opt/tests/my_onnx.onnx "

    bool initTidl(ORT::SessionOptions&sessionOptions)

    c_api_tidl_options 选项;
    OrtStatus*状态= OrtSessionsOptions384Options(&options); Default_Tidl
    if (status != nullptr)

    std::cout <<"无法设置默认 TIDL 选项。";
    返回 false;
    }

    std ::文件系统::路径权重路径(ONNX_PATH );
    如果(!std::文件系统::存在(weightsPath))

    std::cout <<"权重文件不存在。";
    返回 false;
    }

    std :: string artitionsPath = weightsPath.parent_path(). string();
    if (artifactsPath.size ()> sizeof (options.artifacts_folder))

    std::cout <<"伪影路径过长。";
    返回 false;
    }

    strncpy(options.artifacts_folder, artifactsPath.c_str()、artifactsPath.size ());

    options.debug_level = 2;

    状态= OrtSessionOptionsAppendocimplu Provider_Tidl (SessionOptions,&options);
    if (status != nullptr)

    std::cout <<"无法设置 TIDL 执行提供程序。";
    返回 false;
    }

    返回 true;
    }

    int main()

    ort::Env env{ort_logging_level_verbose、"Tests_ONNX_MemLeak"};
    ort::SessionOptions sessionOptions;

    initTidl(sessionOptions);
    sessionOptions.SetIntraOpNumThreads(1);
    sessionOptions.SetGraphOptimizationLevel (GraphOptimizationLevel::ORT_ENABLE_EXTENDED);

    while (true)

    ort::会话会话{env、ONNX_path、sessionOptions};
    std ::: cin.get();
    }

    返回 exit_Success;
    }

    谢谢!

    Chris

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

    尊敬的 Amitai:

    还有一个问题、您是否在 EVM 上运行此文件? 此外、您是否会观察到 python API 存在同样的问题?

    此致、

    Abhay

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

    尊敬的 Amitai:

    我能够重新创建内存泄漏。  我在更新了 Jira 中添加了与 TIDL 和不使用 TIDL 运行的日志。  我还加入了 CPP 应用程序+ makefile、以便为 Dev 团队重新编译。

    此致、

    Chris

    e2e.ti.com/.../onnx_5F00_ort.loge2e.ti.com/.../tidl_5F00_ort.log

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

    您好、Abhey、

    Amitai 是 OOO、因此我将为您提供此主题的帮助。

    您的问题的答案是可以、我们使用的是 TDA4VH EVM。

    巴拉克

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

    好消息克里斯!  

    如果您需要任何进一步的帮助、请告诉我。

    巴拉克