【问题标题】:Using Tensorflow in C++ application: How to release GPU memory在 C++ 应用程序中使用 Tensorflow:如何释放 GPU 内存
【发布时间】:2019-02-10 19:26:03
【问题描述】:

我正在尝试在我的 C++ 应用程序中使用 Tensorflow 进行推理。应用程序的其他部分需要访问大量 GPU 内存(与 Tensorflow 不完全相同)。然而,一旦 Tensorflow 被用于执行推理,它就会占用 GPU 内存并且在应用程序结束之前不会释放它。理想情况下,在推理之后,我将能够释放 Tensorflow 使用的 GPU 内存,以允许其他算法使用 GPU。

有没有其他人遇到过这个问题,你找到解决方案了吗?

【问题讨论】:

    标签: c++ tensorflow memory gpu


    【解决方案1】:

    Tensorflow 在进程的生命周期内分配内存。不幸的是,没有办法解决这个问题,只有在进程完成后才能恢复内存。

    解决此问题的一种方法是将您的应用程序“模块化”为多个不同的进程。有一个执行推理的进程和一个调用它的父进程(您的应用程序)。您可以运行子进程阻塞,因此您的整个应用程序的行为就好像它正在执行代码本身(当然除了处理资源共享)。

    【讨论】:

    • 这完全正确吗?在 Eager 模式下,tensorflow 能够动态分配和释放设备内存。我想知道 Eager 模式是否依赖于 C++ 库以外的其他东西来实现这一点?有见识的人也许可以对此有所了解。
    • 这适用于 CPU 和 GPU 内存吗?
    猜你喜欢
    • 2017-04-23
    • 2019-12-05
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2016-01-01
    • 2019-05-01
    相关资源
    最近更新 更多