首页 > 解决方案 > 关闭会话后 Tensorflow C++ 不释放 GPU 资源

问题描述

我在 Windows 10 上从源代码(分支 r1.7)编译了带有 GPU 支持的 tensorflow C++。在创建新会话时,在 GPU 上分配了 3GB 内存。正如 nvidia-smi 命令所确认的那样,关闭会话似乎不会导致从 GPU 释放内存。仅当 C++ 程序退出时才会释放 GPU 内存。如何释放代码中的内存?

int main()
{
    SessionOptions options;
    Session* session;
    tensorflow::Status status = NewSession(SessionOptions(), &session); // returns ok

    status = session->Close(); // returns ok
    delete session;

    // GPU memory is still occupied at this point
    std::string s;
    std::cin >> s;

    return 0;
}
// GPU memory is released when process exits

标签: c++tensorflowgpu

解决方案


来自文档

请注意,我们不会释放内存,因为这会导致更严重的内存碎片。

当前问题寻找解决方案。似乎为了避免不得不关闭自己的进程,您需要创建一个子进程来为您完成这项工作。


推荐阅读