Table of Contents
一、安装NVIDIA驱动
二、gcc降版本
三、安装CUDA
四、安装CUDNN
五、安装Tensorflos-gpu
安装过程中遇到的一些问题:
问题1. 更新内核警告
问题2. 安装警告
问题3.循环登录或者其他安装失败等问题
本机环境:显卡 NVIDIA GTX 1050,Ubuntu16.04,Python3.6.7(虚拟环境安装)
安装版本:NVIDIA 410.48,CUDA9.0,CUDNN-v7.3.1 for CUDA9.0,Tensorflow-GPU==1.11.0
一定要选择TensorFlow对应的版本进行下载,否则版本出错的话,可能需要重新安装。
对于版本的对应问题,可以参见这篇博客,写的很详细。
以下是下载安装包的网址:
NVIDIA驱动下载,CUDA下载,CUDNN下载
1.删除旧的驱动
sudo apt-get purge NVIDIA*
2.禁用自带的 nouveau nvidia驱动
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
在文件中添加以下内容
blacklist nouveau
options nouveau modeset=0
然后
sudo vim /etc/modprobe.d/blacklist.conf
在文件中添加以下内容
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
4.然后更新一次
sudo update-initramfs -u
如果输入以上命令后出现警告,查看解决办法。
5.修改之后需要重启系统,使用以下命令确认下Nouveau是不是已经被干掉,如果没反应则表示已经干掉
lsmod | grep nouveau
6.然后需要以下命令结束X-window服务,准备安装驱动
sudo service lightdm stop # 结束X-window服务
7.使用Ctrl+Alt+F1切换到tty1控制台,cd到你下载的NVIDIA驱动文件目录下(我的目录 /home/NVIDIA-Linux-x86_64-410.73.run),安装驱动
sudo sh ./NVIDIA*.run -no-x-check -no-nouveau-check -no-opengl-files
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件
出现什么failed之类的选择continue或者yes就可以了。
如果安装完成后出现循环登录的问题,看文章末尾的解决办法。
8.等待安装完成,重新启动X-Window
sudo service lightdm start
9.进入图形界面(如果无法进入图形界面,参考文章末尾的解决办法),使用命令 nvidia-smi 检查安装是否成功
nvidia-smi
nvidia-settings
没有nvidia-settings,可以尝试使用 sudo apt-get install nvidia-settings进行安装
如果有如下图的显示,则表明安装成功
输入命令 nvidia-settings 出现下图所示
如果没有上图出现,可以尝试从第1步重新安装,或者可以尝试直接使用以下命令安装(其中410为我之前下载以及安装的版本),然后重启电脑,再使用命令 nvidia-smi nvidia-settings 查看状态(为了nvidia-settings能出现上图,折腾了好久,重新安装了好多次,如果有耐心,最终也能成功的,虽然最后糊里糊涂的把问题解决了,我提供的解决方案仅供参考,每个人遇到的问题都不一样)
sudo apt-get install nvidia-410-dev
Ubuntu的gcc编译器是5.4.0,然而cuda不支持5.0以上的编译器,因此需要降级,把编译器降到4.9:
sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
使用命令gcc -v查看gcc版本
在cuda所在目录打开终端输入以下命令(之前下载的CUDA文件,在/home/下载/目录下)
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
安装完成后,运行如下命令打开profile文件
sudo gedit /etc/profile
打开文件后在文件末尾添加路径,也就是安装目录,命令如下(若不添加这些内容,不能使用nvcc -V查看CUDA信息):
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH
保存后执行一个命令后重启电脑
sudo ldconfig
sudo reboot
查看版本和测试CUDA的例子
# 查看版本
nvcc --version
出现如下信息:
# 编译例子测试
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
若出现以下信息表明安装成功
在cudnn所在目录打开终端输入以下命令(之前下载的CUDNN文件,在/home/下载/目录下)
tar xvzf cudnn-9.0-linux-x64-v7.3.1.20.tgz #(解压)
sudo cp cuda/include/cudnn.h /usr/local/cuda/include #(复制)
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 #(复制)
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
安装完成CUDA和CUDNN之后使用以下命令验证是否安装成功
cat /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
以下是我的安装成功后的状态
首先确定你电脑上的Python版本(我的版本是3.6.7)
使用以下命令安装Tensorflow(在虚拟环境安装的话不加sudo,这样才能安装到虚拟环境中,否则加sudo的话,这样会安装到全局环境中。如果网络不好的话,可能中途失败,不要灰心,再来一次,可能就安装成功了)
sudo pip install tensorflow==1.11.0 # Python 2.7; CPU support (no GPU support)
sudo pip3 install tensorflow==1.11.0 # Python 3.n; CPU support (no GPU support)
sudo pip install tensorflow-gpu==1.11.0 # Python 2.7; GPU support
sudo pip3 install tensorflow-gpu==1.11.0 # python3.n; GPU support
安装的时候可以使用国内源,可以大大提升下载速度和安装成功率,比如下边使用了清华的源,更多的使用可以看这里
sudo pip3 install tensorflow-gpu==1.11.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
验证安装是否安装成功
进入python解释器(终端输入python或者python3),进行测试:
import tensorflow as tf
with tf.device('/cpu:0'):
a=tf.constant([1.0,2.0,3.0],shape=[3],name='a')
b=tf.constant([1.0,2.0,3.0],shape=[3],name='b')
with tf.device('/gpu:0'):
c = a + b
sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))
出现以下内容表明GPU版安装成功:
以下是我的完整显示:
安装成功,心累啊!
安装过程中遇到什么问题,欢迎随时交流,一起解决。
出现如下警告
sudo update-initramfs -u
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
到这个网页下载自己缺失的文件即可,然后使用以下命令放到响应的位置
sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915
sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915
如果出现如下警告:
WARNING: Unable to find a suitable destination to install 32-bit compatibility libraries. Your system may not be set up for 32-bit compatibility. 32-bit compatibility files will not be installed; if you wish to install them, re-run the installation and set a valid directory with the --compat32-libdir option.
可以使用如下命令,然后再重新安装驱动(先卸载再安装)
sudo aptitude install ia32-libs
重启电脑进入BIOS,将secure boot设置为disable。
可能有的主板没有这个选项,对于华硕主板可以进入BIOS -> Boot -> Secure Boot -> OS Type,然后将Windows UFEI mode 切换为Other OS。