新入职一家公司,在做一个NER任务,有之前的albert NER代码,是在tensorflow-gpu1.12版本上写的,需要cuda9.0,新公司的cuda版本是10.0,对应不上
cuda的安装方法:
https://blog.csdn.net/hizengbiao/article/details/88625044
最简便的做法:
其实本来用tensorflow-gpu1.15就可以了,只要在
vim ~/.bashrc
后加入三行
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
source ~/.bashrc
使加入的三行生效
并重新设置软连接
sudo rm -rf /usr/local/cuda #删除之前创建的软链接
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
nvcc --version #查看当前 cuda 版本
即可。
我这里显示的9.0,因为懒得切回去了。
注意:
此时如果nvidia-smi上显示的cuda版本与nvcc --version显示的不一致没有关系,只要高于nvcc --version即可。
当时的实际操作:
绕了好大一圈,安装cuda9.0,安装对应的cudnn,安装tensorflow-gpu 1.12,删除nvidia-smi驱动、重装,(实际上用不上)
如果出现 Driver/library version mismatch,删除驱动,再自动重装,再重启即可
sudo apt-get purge nvidia*
sudo ubuntu-drivers autoinstall
sudo reboot
这是踩坑之后最简单的方法了。
如果出现找不到 /usr/local/nvidia-smi,那就是驱动没装,直接
sudo ubuntu-drivers autoinstall
即可,这是输入nvidia-smi就正常了,再强调一遍,里面的cuda版本不用管,并不是本机实际的版本。
在cuda9.0,cudnn,tf都安装结束后,检查一下环境变量
vim ~/.bashrc
如果没有加入
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
source ~/.bashrc
再重置软连接,这也是在不同版本的cuda切换的方法
sudo rm -rf /usr/local/cuda #删除之前创建的软链接
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
nvcc --version #查看当前 cuda 版本
此时的cuda版本变为了9.0,运行程序发现成功使用gpu,至此踩坑结束,绕了好大一圈。