ubuntu 即使进程在tmux中运行完毕,GPU内存也不会释放

fykwrbwg  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(158)

我使用tmux new-session创建一个tmux进程,然后使用CUDA_VISIBLE_DEVICES=0 CUBLAS_WORKSPACE_CONFIG=:16:8 python main.py在GPU上运行PyTorch代码。在使用nvidia-smi检查GPU的状态后,我注意到一些GPU内存仍然分配给tmux进程,尽管它们已经完成运行。如果我使用ctrl+c终止tmux进程,内存被释放。如果我杀死tmux进程,内存也会释放。我不明白问题是什么。有没有办法保证当tmux进程完成时,GPU内存再次完全释放?

idfiyjo8

idfiyjo81#

这个问题可能不是因为tmux,因为我注意到了同样的效果,当我运行模型的jupyter没有使用tmux之前,包括行清除内存缓存。尝试把一些代码清除内存缓存在你的代码结束,像这样:

# Clear the memory
del model, trainX, trainY  # or any other heavy parameters you've defined
torch.cuda.empty_cache()  # for pytorch only
gc.collect()

字符串
对于tensorflow用户,您可以包含tf.keras.backend.clear_session()而不是torch.cuda.empty_cache()

相关问题