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

Tensorflow C++ not releasing GPU resources after closing the session

本文关键字:释放 GPU 资源 会话 C++ Tensorflow      更新时间:2023-10-16

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

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

来自文档:

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

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