之前用过TensorFlow的CPU版,现在买了个新电脑,就想把GPU也用起来,又因为目前大部分工作是在linux下做,所以有了在linux下安装cuda和TensorFlow的计划,快一个礼拜一直在搞这件事,重装了N次系统,cuda和TensorFlow终于是能用了。姑且写一下攻略吧,也算自己留个档。
废话不多说了。
sudo lspci | grep -i nvidia
查看,我的是GTX960M这一步主要是针对像我这种以前为了各种谜之目的装过Nvidia驱动而版本又不够高导致后面CUDA装了不能用的熊程序员,以及看了别家攻略安装失败了的你,不要觉得之前装过Nvidia驱动装错了就可以直接丢开。
执行以下命令:
sudo apt-get --purge remove nvidia-*
对于之前从Nvidia官网下载安装过驱动的,如果你的驱动版本小于CUDA的要求(8.0至少375,9.0至少384),找到之前安装脚本所在的目录,执行以下命令:
sudo sh 你的脚本.sh --uninstall
Ubuntu系统默认使用的驱动即为开源的驱动nouveau,我们需要禁用它并且之后也不需启用。
编辑系统配置文件blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf
在其中添加下面两行:
blacklist nouveau
options nouveau modeset=0
保存,退出,执行如下命令使配置生效:
sudo update-initramfs -u
重启电脑,至此开源驱动就已被禁用了,可用如下命令进行检查:
lsmod | grep nouveau
如果系统什么也没返回,说明nouveau禁用成功
这一步主要是安装驱动的需要。在UEFI模式下安装驱动需要为驱动生成签名,公钥需要存储在linux内核信任的某目录下,关于这方面没有找到什么资料,目前大部分的解决办法都是直接关闭UEFI模式。
UEFI的关闭方法与电脑型号有关,我的戴尔灵越是F2进入BIOS后在Boot标签下选择关闭Secure Boot,之后就可以选择从UEFI模式切换到Legacy模式,其他电脑型号请百度。
在终端输入以下命令:
sudo service lightdm stop
之后如果直接死机请重启查看nouveau禁用设置是否正确。正常情况会黑屏,然后按Ctrl+Alt+F1进入字符终端界面,输入用户名和密码通过验证。
进入存放驱动脚本的目录,执行以下命令:
sudo chmod a+x 你的脚本.sh
sudo ./你的脚本.sh -no-x-check -no-nouveau-check -no-opengl-files
执行脚本的三个参数是为了防止接下来循环登录。然后按照步骤进行就可以了,如果提示无法安装32-bit lib不用担心,回车继续就好。
安装完成后重新启动X server服务:
sudo service lightdm start
如果执行以上命令后能够正常进入图形界面,恭喜你安装驱动成功。
进入CUDA安装脚本所在的目录,执行以下命令:
sudo sh 你的脚本.sh
首先会出现一段极长的协议,最后输入accept表示同意,然后会选择是否安装nvidia驱动367,选择no,遇到询问是否安装opengl的地方如果你是双显卡也务必选择不安装,其他同意或默认即可。
安装完成后需要将CUDA的路径加入环境变量,首先打开~/.bashrc文件,添加以下代码:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
中间不要加多余的空格,如果你安装的不是8.0版本则修改版本号,保存,然后打开/etc/profile,文末加上以下代码:
export PATH=/usr/local/cuda/bin:$PATH
保存,至此CUDA安装完毕。
进入CUDNN安装包所在目录,执行以下命令:
sudo dpkg -i runtime包.deb
sudo dpkg -i developer包.deb
sudo dpkg -i 代码sample包.deb
至此,CUDNN安装完成。
CUDNN的code sample可以用来检查CUDNN和CUDA是否安装成功,执行以下命令:
sudo cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
sudo make clean
sudo make
sudo ./mnistCUDNN
正常情况下执行以上代码会得到Test passed!
的结果。如果在make步出错,那么可能gcc需要降级;如果出现CUDA driver version is insufficient for CUDA runtime version
,那么或许你的显卡驱动安装失败,或许你之前安装过低版本的nvidia的显卡又没有删掉。
如果以上步骤都没有问题,恭喜你可以开始安装TensorFlow了。这里采用的是用pip安装的方法。首先安装pip和python dev:
sudo apt-get install python-pip python-dev
安装完毕后执行如下命令:
sudo pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whl
如果出现无法访问的情况,翻个墙或者去清华镜像站安装吧,注意选择tensorflow和python版本,通常来说是能够正常下载安装的。
至此TensorFlow安装完成。
注意:如果是关闭UEFI模式安装的GPU驱动,那么在使用GPU加速机器学习时也需要关闭UEFI模式,否则会报错。
打开一个python终端:
python
逐行敲入以下代码:
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
如果出现以下字样,说明TensorFlow安装成功,并且能够成功启用GPU。
Ctrl+D关闭python终端。
如果出现以下错误,或许UEFI模式没有关闭,或许显卡驱动安装错误。