Tensorflow C++关闭会话后不释放 GPU 资源
Tensorflow C++ not releasing GPU resources after closing the session
>我在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
来自文档:
请注意,我们不会释放内存,因为这可能会导致更严重的内存碎片。
当前问题以找到解决方案。似乎为了避免关闭自己的进程,您需要创建一个子进程来为您完成这项工作。
相关文章:
- 释放错误后堆使用
- G锁定铸造到基础上会释放模拟行为
- 在将变量声明为引用时,堆在释放后使用
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- C++双重释放或损坏(out)
- 如何在c++中释放内存
- 使用全局声明的向量时,C++双重释放错误/损坏
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- 为什么瓦尔格林德在不释放恶意内存后没有报告任何问题?
- 调用析构函数以释放动态分配的内存
- 在函数范围内在堆栈上分配的数组在离开函数时是否总是被释放?
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 如何在向量中释放指针?
- std::unordered_map析构函数不释放内存?
- 在C++应用程序中使用 Tensorflow:如何释放 GPU 内存
- Tensorflow C++关闭会话后不释放 GPU 资源
- 跟踪GPU内存泄漏的专业方法(分配而不释放)