建议:装环境之前,先把自己安装的版本弄清楚,后面出现版本不匹配的问题再重装就会比较烦。
注意tensorflow-gpu-2.0有几处代码改动,在跑faster-rcnn的时候有点问题,所以后面需要把tensorflow-gpu版本改成1.1+的。
我这里的环境是:
Ubuntu16.04+2080ti+Display Driver430.50+cuda10.0+cudnn7+Anaconda(python3.6)+tensorflow-gpu-1.13.1
1. 显卡驱动: 版本430.50,有不同的安装格式,这里我下的是runfile。
安装显卡驱动步骤:
(1)lsmod |grep nouveau,查看到源生的驱动在。如果有就是会出现红色的nouveau,没有就什么都没有。
(2)如果有原生的驱动在,需要禁用自带的 nouveau nvidia驱动 (important!)
-->创建一个文件通过命令 sudo vim /etc/modprobe.d/blacklist-nouveau.conf
--> 按一下 i 进入编辑状态,并添加如下内容:
blacklist nouveau
options nouveau modeset=0
编辑完了:esc--> :-->wq! (保存并退出)
-->再更新一下
sudo update-initramfs -u
-->修改后需要重启系统。确认下Nouveau是已经被你干掉,使用命令: lsmod | grep nouveau
(3)禁掉lightdm桌面管理器,安装驱动(secure boot disabled)
sudo /etc/init.d/lightdm stop
接下来会变黑好像什么都没有,这时候ctrl+alt+f1(命令行出来了)
(4)然后找到你放run文件的文件夹下:
sudo sh ./NVIDIA-Linux-x86_64-375.20.run –no-opengl-files(这个参数不知道什么用,别人说有用我就加了)
(5)然后这样:sudo /etc/init.d/lightdm start,就可以进入正常的界面了。
安装好了可以查看显卡驱动版本:cat /proc/driver/nvidia/version
2. 安装CUDA10.0
2080ti 似乎和cuda9有问题,再装了cudnn之后跑cudnn_samples报错,后面改成了cuda10之后就成功了。
1)下载cuda:https://developer.nvidia.com/cuda-toolkit-archive , 我用的是10.0.
cuda安装参考: https://zhuanlan.zhihu.com/p/47330858
2)安装之前验证一下电脑是否已经插上了支持CUDA的GPU,用win+alt+t调出终端,然后输入:
lspci | grep -i nvidia
如果显示出你的NVIDIA GPU版本信息应该就没问题。
3)验证系统是否安装了gcc,在终端中输入:
gcc --version
如果装了结果会显示类似信息:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0
如果没有就自行安装。sudo apt-get install build-essential (Ubuntu默认gcc5.4)
4)验证系统是否安装了kernel header和 package development
a、查看正在运行的系统内核版本:
在终端中输入:
uname --r
结果显示类似就可以:4.10.0-40-generic
b、在终端中输入:
sudo apt-get install linux-headers-$(uname --r)
以安装对应kernel版本的kernel header和package development
结果如果显示:
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 4 个软件包未被升级。
则表示系统里已经有了,不用重复安装。
5)禁用 nouveau驱动
终端中运行:
lsmod | grep nouveau
如果有输出则代表nouveau正在加载。需要我们手动禁掉nouveau。
以下是Ubuntu的nouveau禁用方法:
a、我们需要在电脑根目录的/etc/modprobe.d文件夹中创建文件blacklist-nouveau.conf
先用apt-get安装vim编辑器,然后
这需要输入命令:
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
此时会出现一个窗口 (我们利用vi编辑器的指令来编辑和保存文件)
按键盘上的insert键进入输入模式,然后在文件中输入以下两行内容:
blacklist nouveau
options nouveau modeset=0
然后按ESC键退出编辑模式,在键盘上摁下“ :wq ”这三个键再回车,就保存并退出了。
b、然后在终端输入执行:
sudo update-initramfs -u
之后重启电脑
c、重启后在终端执行:
lsmod | grep nouveau
或者
lspci | grep -i nouveau
若终端无内容输出了,则禁用成功,若仍有内容输出,请检查上述操作,可以百度一下寻求解决。
注:vi是Linux终端下或控制台下常用的编辑器,要用vi打开一个文件,就输入:
vi /路径/文件名 (例如:终端输入 vi /etc/fstab 就会显示/etc/fstab文件里的内容)
基本操作:
- 使用键盘上的Page Up和Page Down键可以上下翻页;
- 按下Insert键,可以见到窗口左下角有“Insert”字样,表示当前为插入编辑状态,这时从键盘输入的内容将插入到光标位置;
- 再按下Insert键,左下角将有“Replace”字样,表示当前为替换编辑状态,这时从键盘输入的内容将替换光标位置的内容。
- 编辑完内容后,按下Esc键,并输入“:wq”,然后回车就可以保存退出。
- 如果不想保存而直接退出,则按下Esc键后,输入“:q!”,然后回车即可。“wq”表示Write和Quit,即保存退出;“q!”表示忽略修改强行退出。
6)重启电脑,进入登录界面的时候,不要登录进入桌面(否则可能会失败,若不小心进入,请重启电脑),直接按Ctrl+Alt+F1进入文本模式(命令行界面),然后登录账户。
登陆后输入:sudo service lightdm stop
以此来关闭图形化界面,然后切换到cuda安装文件的路径:例如我的cuda在下载文件夹里所以我要输入:
cd Downloads
然后输入(根据cuda版本不同自行修改):sudo sh cuda_10.0.130_410.48_linux.run
开始安装,按提示一步步操作,按住回车看完声明。按照提示输入相应字符,例如有的需要输入accept,有的需要输入yes。
注意:(1)遇到提示是否安装openGL ,选择no(如果你的电脑跟我一样是双显,且主显是非NVIDIA的GPU在工作,需要选择no),其他都选择yes或者默认即可。(如果您的电脑是双显卡且在这一步选择了yes,那么你极有可能安装完CUDA之后,重启图形化界面后遇到登录界面循环问题:输入密码后又跳回密码输入界面。这是因为你的电脑是双显,而且用来显示的那块GPU不是NVIDIA,则OpenGL Libraries就不应该安装,否则你正在使用的那块GPU(非NVIDIA的GPU)的OpenGL Libraries会被覆盖,然后GUI就无法工作了。)(2)要不要再装driver,记得选No。(3)另外cuda samples我也没有装。
安装成功后,会显示installed,否则会显示failed。
7)重新启动图形化界面,输入 :
sudo service lightdm start
如果没反应,需要同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了。
8)重启电脑,检查Device Node Verification。
执行 ls /dev/nvidia* 可能出现a、b两种结果,请对号入座。
a、若结果显示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
------------------------这部分我没有出现-------------------------------------------------------------------
或显示出类似的信息,应该有三个(包含一个类似/dev/nvidia-nvm的),则安装成功。
b、大多数结果可能会是这样
ls: cannot access/dev/nvidia*: No such file or directory
或是这样的,只出现 /dev/nvidia0 /dev/nvidiactl
但没有/dev/nvidia-num,即文件显示不全。
我的解决方法参考了一篇博客,找到文件夹
/usr/local/cuda/samples/1_Utilities/deviceQuery,进去以后有个deviceQuery.cpp, make一下(在文件夹启动终端,输入sudo make),然后
./deviceQuery
这样你再查看
ls -la /dev | grep nvidia
就会发现有三个啦。
-----------------------------------------------------------------------------------------------------------------
8)设置环境变量
终端中输入:
sudo gedit /etc/profile
在打开的文件末尾,复制添加以下两行:
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
(这是64位系统的,32位系统自行百度)
保存文件,并重启。因为source /etc/profile是临时生效,重启电脑才是永久生效。
到这里安装应该就成功了,后面是一些验证的工作,其实一般不用验证。
9)重启电脑,然后检查上述的环境变量是否设置成功
a、 验证驱动版本
敲入:cat /proc/driver/nvidia/version
结果显示
NVRM version: NVIDIA UNIX x86_64 Kernel Module 420
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
b、 验证CUDA Toolkit
敲入:nvcc -V
会输出CUDA的版本信息。
如果是这样的:
The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
可能是环境配置没有成功,请重复上述步骤8。
最后查看cuda版本:cat /usr/local/cuda/version.txt
3. 安装CUDNN
参考官网步骤:https://docs.nvidia.com/deeplearning/sdk/cudnn-install/
- Navigate to your <cudnnpath> directory containing cuDNN Debian file.
- Install the runtime library, for example:
sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
- Install the developer library, for example:
sudo dpkg -i libcudnn7-devel_7.0.3.11-1+cuda9.0_amd64.deb
- Install the code samples and the cuDNN Library User Guide, for example:
sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb
验证前注意重启,如果装cuda9,验证的时候会出错Cublas failure,换成cuda10就好了。
4. Anaconda-python3.6
5. Tensorflow-gpu 1.13.1
pip install tensorflow-gpu==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
6. 关于gcc版本:
切换gcc版本参考: https://www.cnblogs.com/uestc-mm/p/7511063.html
改变优先级: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100 (100代表优先级)
选择可选版本:sudo update-alternatives --config gcc
查看当前gcc版本:gcc --version
最后附上一个版本对应: