安装一个cuda8.0把我折腾了两天,各种问题,最后终于成功了,所以想写个记录以后来给自己一个备份,同时也分享一下我所遇到的问题及最后如何解决的。这一次安装过程给了我一个教训:
一定要以官方的安装教程为准!一定要以官方的安装教程为准!一定要以官方的安装教程为准!
重要的事情说三遍,网络上的各个版本所遇到的问题和解决方法都不尽相同,所以要以官方为基准来做,我就是图方便找个好几个博客,除了各种问题,浪费了好多时间。好,废话不多说了,下面开始一步步来操作,本篇博客主要是写CUDA的安装。
配置环境
首先给出自己的配置环境
操作系统: ubuntu 14.0.4
显卡(笔本): GEFORCE GTX 960M
CUDA8.0: cuda_ 8.0.44 _linux.run
驱动版本: NVIDIA-Linux-x86_64-375.26.run
第一步:预安装操作
这一步是确保Linux系统能够安装CUDA Toolkit和Driver的一些预检查操作:
1. 确认系统有一个CUDA-capable的GPU
2. 确认系统运行的是一个可支持的Linux版本
3. 确认系统安装了gcc
4. 确认系统有正确安装的kernel headers和开发包(development packages)
5. 下载NVIDIA CUDA Toolkit
1. 确认系统有一个CUDA-capable的GPU
打开终端,输入
lspci | grep -i nvidia
会显示显卡的信息,如下所示
1.2 确认系统运行的是一个可支持的Linux版本
终端输入
uname -m && cat /etc/*release
检查Linux系统的版本是否支持CUDA,如下所示
1.3 确认系统安装了gcc
终端输入
gcc --version
检查系统是否安装了gcc,如下所示
1.4. 确认系统有正确安装的kernel headers和开发包(development packages)
终端输入
uname -r
可以查看自己的kernel版本信息
在终端输入
sudo apt-get install linux-header=$(uname -r)
可以安装对应kernel版本的kernel header和develoment packages。
以上就是安装CUDA前的系统环境检查和准备,满足上述要求后,方可开始安装,如果某一项没有满足,可参考官方文档的解决方法,具体不展开细说。
第二步:Runfile安装方式
2.1 下载CUDA安装包
官网地址:http://developer.nvidia.com/cuda-downloads
根据各自的系统选择相应的安装包,如下所示
我的系统是64位的Ubuntu 14.04,所以选择相应的runfile。
2.2 安装前禁用Nouveau
安装前需要禁用原来的Nouveau驱动,在终端输入
lsmod | grep nouveau
如果有输出,表示nouveau正在加载,如下所示
而我们要的是它不加载,方法就是:在 /etc/modprobe.d中创建文件blacklist-nouveau.conf,在文件中输入以下内容
blacklist nouveau
options nouveau modeset=0
然后在终端上输入
sudo update-initramfs -u
设置完毕后,再次运行 lsmod | grep nouveau ,如果运行后没有任何输出,表示输出成功,
注: 我按照上述方法用 lsmod| grep nouveau 仍然有输出,lspci | grep nouveau没有输出,最后还是安装成功了,所以这里我也不是很明白是否禁用成功了。
2.3 安装CUDA
禁用nouveau成功后,重启下电脑,按 alt+ctrl+f1 进入text mode,登录你的账号。关闭图形界面,在终端输入
sudo service lightdm stop
进入cuda的安装包文件路径,运行
sudo sh cuda_8.0.44_linux.run
按照提示一步步操作,注意在第二个问题
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?(y)es/(n)o/(q)uit:
是否安装驱动选择 n,其余都选y,后面会单独安装驱动,最后会显示installed,否则显示failed。
最后在终端输入
sudo service lightdm start
重新进入图形界面,可以重启一下。
2.4 检查Device Node Verification
注意注意这一步很重要,我就是栽在这一步上,网上一些教程都没有说这一步,我跟着装完后,编译sample后运行deviceQuery报错,如下所示
而且是个unknown error,找了很多都没找到类似的错误,然后在输入 nvidia-smi 发现报的错是这样的:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.
如下图所示。
说的是就是无法链接到NVIDIA driver,可是我分明都已经安装好驱动了啊,经过几番搜寻就是少了检查Device Node Verification这一步。
所以正确的方法是这样的:
首先检查 ~/dev下是否存在nvidia*的文件,没有(我就是没有)需要添加一个start sript,我是自己加的,文档里也没说怎么加,就给了个文本,我查了下如何添加start script,写了下面这个
sudo nano /etc/init/cuda_start.conf
自己随便命名了一个cuda_start.conf,这个不重要,关键是路径是 /etc/init 和里面的内容(官方文档里的):
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
然后就问题就解决了,说明了还是要看官方文档。
2.5 配置环境变量
终端输入
sudo gedit /etc/profile
网上还有对 ./bashrc进行修改的,两者效果是相同的,问题不大。在文件末尾加上
$export PATH=/usr/local/cuda-8.0/bin:$PATH
$export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
重启电脑,检查上述变量是否安装成功
终端输入
env
在给出的环境变量中检查是否有上述变量,有表明设置成功。
2.6 安装NVIDIA显卡驱动
这里把显卡驱动的安装放在CUDA安装后面,我一开始是放在前面安装,后来出错了,都删了后先装CUDA后装显卡驱动,没问题,所以放在这里单独写,因为CUDA安装过程的自带驱动没有选择,而是单独安装显卡驱动。
1. 下载对应显卡的显卡驱动
我的显卡是GTX 960M,找到的是NVIDIA-Linux-x86_64-375.26.run,官网地址:
http://www.geforce.cn/drivers,根据类型选择对应的驱动即可。
2. 卸载旧的NVIDIA驱动
终端输入
sudo apt-get --purge remove nvidia*
3.安装新的NVIDIA驱动
同样的先进入text mode,关闭图形界面 sudo service lightdm stop然后执行
sudo sh NVIDIA-Linux-x86_64-375.26.run -no-x-check -no-nouveau-check -no-opengl-files
上述后面几个一定要加,尤其是-no-opengl-files,不然会出现无法进入图形界面,重复登录的问题,不要问我为什么,加就是了,否则就重复登录。
然后就是根据选项选择是就对了,其中一个 报错: The distribution-provided pre-install srcipt failed 不用管,选择是继续安装,最后会提示安装complete。
然后回到图形界面,重启一下。
至此CUDA8.0已经安装完毕,但是我们还需要make一下samples,通过demo例子来测试验证一下是否成功。
第三步: 检查安装是否成功
3.1 检查NVIDIA Driver是否安装成功
终端输入
$ cat /proc/driver/nvidia/version
会输出驱动的版本号,如下
NIVIDIA Driver版本375.26确实安装成功。
3.2 检查CUDA Toolkit是否安装成功
终端输入
nvcc -V
会输出CUDA的版本信息
如上所示,表明CUDA安装成功。
3.3 生成cuda的demo进行检查
进入samples的路径,为 ~/NVIDIA_CUDA-8.0 _Samples
终端输入
make
编译之前要先安装好gcc,我一开始就是没装所以报错了(说明了第一步的重要性),安装方式是终端输入
sudo apt-get install gcc
最后编译过程会有点长,十分钟左右,编译完成后会提示Finished building CUDA samples
然后我们就可以用了,终端输入
cd ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
再次输入
./deviceQuery
上述结果就是对的,之前2.4中的结果就是错的,同样简单点检查可以输入
nvidia-smi
至此表明CUDA安装成功并且配置成功(真的是醉了!!!!)。
最后祝愿大家都能一次配置成功,后面我会继续写Caffe的配置过程,希望能够顺利。