Tensorflow C ++在关闭会话后不释放GPU资源

时间:2018-06-29 06:06:58

标签: c++ tensorflow 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

1 个答案:

答案 0 :(得分:1)

来自doc

  

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

当前issue来查找解决方案。看来,为了避免不得不关闭自己的进程,您需要创建一个子进程来为您完成工作。