文章目录
- 问题描述
- 问题原因
- 解决方案
- 参考
问题描述
在coding的时候我们经常在指定device的时候用这么一句代码:
device = 'cuda' if torch.cuda.is_available() else 'cpu'
但是有时候我们会发现device确实是放在了cpu上面,所以为了明确出错的原因,我们在shell里先import了torch,再执行torch.cuda.is_available()
,发现在返回False
结果之前给出了错误原因,其中部分内容就是我们在标题中写的。
问题原因
这种情况一般来说有两种原因
- gpu的计算能力过差
pytorch慢慢已经不支持cc(compute capability)小于3的gpu了,所以可以先查看一下自己的gpu的cc大小。但总的来说,这种情况出现的几率不大。 - cuda版本不兼容
这种情况通常是因为conda的虚拟环境中install的cudatoolkit版本高于gpu本身的cuda版本。在linux平台下,我们通过nvidia-smi命令查看gpu驱动的cuda版本,看是否低于我们在环境中安装的cudatoolkit版本。
解决方案
- 如果是因为平台gpu的cc过低导致的,那只能破费购进新卡或者降低torch版本了
- 一种方式是我们更新平台gpu的cuda版本,如果你是这台服务器的root用户,非常建议通过这种方式将gpu的驱动更新到最新版本。但如果你只是这台服务器的普通用户,我们则需要降我们的pytorch版本以满足需求的cudatoolkit版本小于等于平台gpu驱动。当然,如果版本降得很夸张,非常建议跟管理员去扯扯皮hhh 😄
参考
https://forums.developer.nvidia.com/t/k1000m-cuda-driver-initialization-failed-you-might-not-have-a-cuda-gpu/226120
文章出处登录后可见!
已经登录?立即刷新