------------------------------------------------更新分界线------------------------------------------------------------------
2022.4.17最新更新了一个pytorch无法调用gpu的解决方法 pytorch无法调用gpu的一些解决方法_Dcityy的博客-CSDN博客
---------------------------------------------------------------------------------------------------------------------------------
首先说一下我的环境ubuntu16.04,anaconda3,用的导师的服务器,xshell连接,(几乎)没有多少权限(apt install 都是刚拿的权限没多久)
刚开始啥也不懂,上来建了个新环境,用conda安装好pytorch等库,想跑个简单的卷积神经网络代码,结果可想而知用的cpu跑的。然后找了找了找资料去了pytorch官网PyTorch,用正规的方式(nvidia-smi命令)查看了cuda的版本,我当时的版本是10.1,后面会说这些版本之间的关系,然后自以为聪明的在历史版本中找了10.1版本的命令(conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch)注意这是个巨坑,除了cudatoolkit其他的一律不要加版本号!!!除了cudatoolkit其他的一律不要加版本号!!!除了cudatoolkit其他的一律不要加版本号!!!然后import torch都给我报错什么无效的标头ELF,然后折腾了很久我直接用
conda install pytorch torchvision torchaudio cudatoolkit=10.1 -c pytorch
就没报错了,但是使用torch.cuda.is_available()为False。注意你cuda装的哪个版本就把cudatoolkit后的版本号改了就行。
首先说明一下nvcc(nvcc -V命令需要安装)和nvidia-smi看的cuda版本有什么不同,如图
可能很多人看到的nvidia-smi版本和nvcc -V的版本都是不一致的,这是正常的。nvidia-smi显示的cuda version版本号是你安装的nvidia驱动支持的最高cuda版本,而nvcc显示的则是你真实安装的cuda版本,通俗点说就是你真实安装的cuda版本不要超过nvidia驱动支持的最高cuda版本就行,当然太低可能也不行,建议最多差一个版本。
搞清了这个关系,接下来就是从头来。
还是那句话,别管nvidia驱动已经装好没(能用nvidia-smi就表示nvidia驱动装了,好没好这就不知道了),直接重新安装驱动,也别怕权限不够,怕卸载了装不上,我当时也有点心理压力,怕乱来把这个搞没了,没法向导师交差。但是不破不立,亲身实践只需要一个apt install权限就足够了。
先卸载nvidia驱动,命令如下
sudo apt-get purge nvidia-cuda*
sudo apt-get purge nvidia-*
禁用nouveau,sudo vim /etc/modprobe.d/blacklist.conf后在文件末尾加入:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
进行了上面这些步骤之后一定要使用sudo reboot重启服务器,不然后面安装驱动会报错An NVIDIA kernel module ‘nvidia-uvm’ appears to already be load。
到nvidia驱动官网下载驱动NVIDIA 驱动程序下载,如图
产品系列中显卡后面有notebook的表示笔记本电脑使用的,没有的就表示台式机。然后点搜索之后下载就行。这里我采用的安装策略是在window上下载之后,用xftp上传到服务器,不过现在xshell xftp的官网好像进不去,下载不到免费版的了,如果有需要xftp的话就发消息给我邮箱[email protected]。下载并且上传之后好如图
我们使用
sudo chmod a+x NVIDIA-Linux-x86_64-470.94.run
将文件变为可执行,然后使用
sudo ./NVIDIA-Linux-x86_64-470.94.run
进行驱动安装
然后极大可能会遇到You appear to be running an X server; please exit X before...这种错误,没关系,使用
sudo /etc/init.d/gdm stop
sudo /etc/init.d/gdm status或者
sudo /etc/init.d/lightdm stop
sudo /etc/init.d/lightdm status第一个不行就是第二个,关闭 X server
然后在使用安装命令,如果出现让你选择的选项,说明你快成功了,如下
The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。
Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。
问题没记住,选项是:install without signing
问题大概是:Nvidia's 32-bit compatibility libraries? 选择 No 继续。
Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续
如果遇到失败中断了,继续尝试即可,如果最后还是不行,请查看我所参考的这几位大佬的博客。
(1条消息) 更新NVIDIA显卡的CUDA驱动出错,You appear to be running an X server; please exit X before_Learning by doing-CSDN博客
(1条消息) 关于linux服务器(centos)安装驱动出现An NVIDIA kernel module ‘nvidia-uvm‘ appears to already be load的问题自己的解决方法_hbw136的博客-CSDN博客
(1条消息) Ubuntu16.04 nvidia 显卡驱动过程及遇到的问题_wangyjfrecky的博客-CSDN博客_ubuntu附加驱动无法更换显卡驱动
进入官网CUDA Toolkit Archive | NVIDIA Developer,如下图:
点击下载后会让你登陆或者注册,新用户用邮箱注册一个就好。下载好上传之后如图
使用跟第一步中相同的方法
sudo ./cuda_10.1.105_418.39_linux.run
然后安装过程中,[X]表示安装,用回车可以修改是否安装,第一个nvidia accelerated graphics driver表示安装nvidia驱动,我们已经安装过了,所以不需要了。将[X]中的X用回车去掉。然后安装成功后会出现类似于这张图的信息告诉你安装路径在哪。
安装成功后如图
看网上说还需要设置软链接,需不需要设置,你只需要看nvcc -V得到的版本是不是你想要的版本。然后我这里还算顺利所以也不用设置。还有问题可以看看
Linux服务器安装cuda,cudnn,显卡驱动和pytorch超详细流程_kingfoulin的博客-CSDN博客_linux安装cuda
Linux安装CUDA的正确姿势_FlyWine的博客-CSDN博客_linux安装cuda
安装cudnn到底是不是必要这我也不知道,因为我也不是从头开始的(滑稽),不过现在你可以试一试了。师姐跟我说这是必须要装的。然后安装cudnn,这位大佬已经写的非常清楚Linux服务器安装cuda,cudnn,显卡驱动和pytorch超详细流程_kingfoulin的博客-CSDN博客_linux安装cuda 完成之后,再使用torch
最后说一点题外话
在linux终端下运行python代码只需要执行类似于
python LeNet.py
这种命令就可以跑代码了 ,在代码里面最好加一个__name__=="__main__"函数