关闭会话后,Tensorflow 1.8内存仍保留在GPU上

时间:2018-12-07 12:39:36

标签: c++ tensorflow

在我公司中,我们目前正在开发一个广泛使用GPU处理的应用程序:深度学习,自己的CUDA实现和使用DirectX的3D可视化。 GPU内存访问对于每个进程都很重要。使用DeepLearning(DL)模型时,我们遇到了TensorFlow(TF)的一个问题:使用DL模型关闭TF的会话后,GPU内存未释放。仅在完成申请过程后才释放它。这给我们的应用程序造成了严重的问题,因为由于内存不足,DL调用后无法完成其他处理请求。我发现有一些解决方案可以在另一个进程中启动TF会话,但是我们担心在处理之间必须复制大量内存的性能。 TF是否有其他解决方案,或者新版本有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

TensorFlow会话拥有必须通过调用close()方法显式释放的资源。您需要显式使用该方法。

由于Session的实例是线程安全的,并且多个线程可以访问同一Session对象,因此请确保释放与该Session对象连接的所有内容,因为这可能会使Session无法正确关闭。

Here是关闭sessison子过程后如何解决内存分配问题的方法。