GPU显存不释放

GPU显存不释放

使用pytorch训练网络时,有时强行kill掉程序后, 发现GPU显存未释放,原因是使用PyTorch设置多线程(threads)进行数据读取(DataLoader),其实是假的多线程,他是开了N个子进程(PID都连着)进行模拟多线程工作,所以你的程序跑完或者中途kill掉主进程的话,子进程的GPU显存并不会被释放,需要手动一个一个kill才行

解决办法:

1.执行如下python脚本:

# 该脚本会清除 当前登陆用户导致的GPU显存不释放问题
import os
result = os.popen("fuser -v /dev/nvidia*").read()
results = result.split()
for pid in results:
    os.system(f"kill -9 {
      
      int(pid)}")

2.或者执行如下sheel脚本

#!/bin/bash
gpu_process=$(fuser -v /dev/nvidia*)
for process_id in $(fuser -v /dev/nvidia*)
do 
    $(kill -9 $process_id)
done

参考:https://www.jianshu.com/p/0d8ea6ca332a

猜你喜欢

转载自blog.csdn.net/qq_29304033/article/details/124037781
今日推荐