Ubuntu16.04锁屏后Spyder无法识别GPU,求替代重启的初始化方案
解决Ubuntu休眠后Spyder中PyTorch无法识别GPU的问题
我之前也碰到过一模一样的情况——系统休眠后终端nvidia-smi能看到GPU,但Spyder里PyTorch就是检测不到,不用重启电脑的话,可以试试这几个方法:
直接重启Spyder进程
这是最简单的方案,关闭当前Spyder窗口再重新打开。因为程序启动时会重新初始化CUDA环境,休眠后新启动的Spyder进程应该能重新识别到GPU资源。很多时候这个方法就管用,不用折腾别的。在Spyder中手动重置CUDA上下文
如果不想重启Spyder,可以在控制台里执行以下代码强制重新初始化GPU连接:import torch # 清理CUDA缓存 torch.cuda.empty_cache() # 手动指定并激活两块GPU torch.cuda.device(0) torch.cuda.device(1) # 验证是否识别成功 print(f"检测到的GPU数量: {torch.cuda.device_count()}")这段代码会清空CUDA的缓存,重新建立和GPU设备的连接,大概率能让PyTorch重新检测到GPU。
重启NVIDIA持久化服务
休眠可能导致NVIDIA的持久化进程异常,在终端执行以下命令重启相关服务:sudo systemctl restart nvidia-persistenced # 如果上面的命令无效,试试这个 sudo systemctl restart nvidia-fallback.service老版本Ubuntu可能需要用
service命令:sudo service nvidia-persistenced restart重启服务后回到Spyder,再运行PyTorch的GPU检测代码,应该就能识别了。
清理占用GPU的残留进程
有时候休眠会留下一些占用GPU的僵尸进程,用nvidia-smi查看进程列表:nvidia-smi找到列表里的PID(进程号),然后用命令杀掉:
sudo kill -9 [PID]替换
[PID]为实际的进程号,杀掉后重启Spyder,GPU就能被重新识别了。
按这个顺序试下来,基本不用重启电脑就能解决问题。
内容的提问来源于stack exchange,提问作者innuendo
相关产品推荐
相关产品推荐

