CUDA的安装包括很多种方法。由于像freeglut3-dev这些库在当前的ubuntu14.04系统中安装不了,但在Kubuntu系统中可以安装,因此可以在这两个系统中安装CUDA的方法不一样。
首先验证你是否有nvidia的显卡(http://developer.nvidia.com/cuda-gpus个网站查看你是否有支持gpu的显卡):&lspci|grep -i nvidia
查看你的linux发行版本(主要是看是64位还是32位的):$uname –m && cat/etc/*release
看一下gcc的版本:$gcc –version
根据官网介绍,之前安装的版本都会有冲突的嫌疑,所以之前安装的Toolkit和Drievers就得卸载,屏蔽,等等。
$ sudo apt-get--purgeremove nvidia* (由于我的是新系统,此步省略)
(2)安装一些必要的库:
在此之前先sudo apt-getupdate
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
(3)禁掉nouveau:
在/etc/modprobe.d/blacklist.conf最后一行加上 blacklist nouveau
禁了nouveau之后有时要重启下电脑才生效
(4)切换到tty1(ctrl+alt+F1)
关闭GUI: sudo service lightdm stop
在此遇到一个问题:自从Kubuntu14.04装上Nvidia的GTX 960显卡驱动后,C+A+F1就无法启动tty终端了。准确的说,是黑屏,无法显示任何东西,但是可以操作,盲打可以登陆。切换回X后,用w命令可以察看到已经登陆了。
————————————————————————————
nvidia的显卡:
修改/etc/initramfs-tools/modules
加入
fbcon
vesafb
nvidiafb三行
再修改/etc/modprobe.d/blacklist-framebuffer文件
把nvidiafb,vesafb,vga16fb三行注释掉
运行sudo update-initramfs -u重启电脑就好
—————————————————————————
我的没vga16fb这一行,就无视掉了。
另外我考虑到也可能是分辨率的问题,所以去 /etc/default/grub里把GRUB_CMDLINE_LINUX=""加了个参数,改为GRUB_CMDLINE_LINUX="vga=792",792代表的是1024*768分辨率的十六进制0x0318代码。
然后更新grub:update-grub,重启。
就可以了。
(5)更改CUDA Toolkit执行权限:
sudo chmod +x cuda-7.0.28_linux_64.run
(6)执行CUDA安装文件:
sudo ./cuda-7.0.28_linux_64.run --no-opengl-libs
(If the target system includes both an integrated GPU (iGPU) and a discrete GPU
(dGPU), the --no-opengl-libs option must be used. Otherwise, the openGL library used
by the graphics driver of the iGPU will be overwritten and the GUI will not work. In
addition, the xorg.conf update at the end of the installation must be declined.)
(7)切换回GUI:
sudo service lightdm start
(8)成功切回GUI后添加环境变量:
打开你的.bashrc文件:
sudo vi ~/.bashrc
加入下列语句
$ exportPATH=/usr/local/cuda-7.0/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
检查是否设置成功:
$ echo $PATH
$ echo$LD_LIBRARY_PATH
(9)检验:
查看显卡的驱动版本:cat /proc/driver/nvidia/version
查看nvcc编译器的版本:nvcc -V i
编译cuda的示例代码: cd ~/NVIDIA_CUDA-7.0_Samples
然后make一下编译代码:make all
进入bin路径:
cd ~/NVIDIA_CUDA-7.0_Samples/bin
(cd /home/lin/NVIDIA_CUDA-7.0_Samples/bin/x86_64/linux/release)
然后运行deviceQuery文件: ./ deviceQuery
如果提示nvcc未安装,其实是nvidia-cuda-toolkit的编译器没有安装完整,则按照提示操作:
$ sudo apt-get installnvidia-cuda-toolkit
首先在官网上下载CUDA的deb包
下载完成之后可以使用如下命令安装它,注意文件名修改为cuda-repo-ubuntu1404_7.0-28_amd64.deb
命令:sudo dpkg –Icuda-repo-ubuntu1404_7.0-28_amd64.deb
安装好仓库之后,就可以更新你的本地仓库:sudoapt-get update
最后开始安装cuda以及显卡驱动(安装cuda的同时就会把显卡驱动也全部安装好)
sudoapt-get install cuda
不出意外的话,按照上面步骤可以成功安装cuda,这跟其他手工安装cuda的方法相比,实在是太方便了,至于为什么按照这个方法可行的具体原因还不知道。
安装完之后你需要设置环境变量的方法与1.1的方法相同,这里就不赘述了。
设置完毕之后,你还可以选择是否安装cuda附带的示例代码(
$ cuda-install-samples-7.0.sh
然后检验。
(1)更新系统:sudo apt-get update && sudo apt-get upgrade
sudoapt-get install build-essential
(2)从nvidia官网上下载cuda安装包(cuda_7.0.28_linux.run文件)
(3)解压run文件:
chmod +x cuda_7.0.28_linux.run
mkdir nvidia_installers
./cuda_7.0.28_linux.run –extract=`pwd`/nvidia_installers
(4)更新与nvidia驱动相匹配的linux image:
sudo apt-get install linux-image-extra-virtual
(安装linux-image-extra-virtual的时候,可能会询问:What would you like to do aboutmenu.lst? 选择”keep the local version currentlyinstalled”)
(5)禁掉nouveau:
创建blacklist-nouveau.conf文件:
sudo vi/etc/modprobe.d/blacklist-nouveau.conf
将下列语句加入文件:
blacklist nouveau
blcklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
回到终端:
echo options nouveau modeset=0 | sudo tee –a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs –u
sudo reboot
(6)重启后,切换到tty1界面并关闭GUI:
sudo service lightdm stop
(7)sudo apt-get install linux-source
sudo apt-get installlinux-headers-`uname -r`
(8)安装驱动:
cd nvidia_installers
sudo ./NVIDIA-Linux-x86_64-346.46.run
注意:
如果有“nvidia-installer was forced toguess the X library path ‘/usr/lib’and X module path …”,继续并点击OK.
如果有“The CC version check failed”点击“ignore CC version check”.
如果有问你关于32-bit libraries,选择yes,并安装它们.
如果问你关于“running nvidia –xconfig to updateyour X configuration file”,选择no.
运行 nvidia –smi 来查看已安装的GPU.
sudo modprobe nvidia
sudo apt-get install build-essential
sudo ./cuda-linux64-rel-7.0.28-19326674.run
运行结束后,切换回GUI:
sudo service lightdm start
成功切回GUI后添加环境变量:
sudo vi ~/.bashrc
export PATH=$PATH:/usr/local/cuda-7.0/bin
export LD_LIBRARY_PATH=:/usr/local/cuda-7.0/lib64
保存.bashrc文件后运行source ~/.bashrc
sudo./cuda-samples-linux-7.0.28-19326674.run
cd/usr/local/cuda-6.5/samples
sudo make
全部编译完成后,进入 samples/bin/x86_64/linux/release, sudo下运行deviceQuery: sudo ./deviceQuery
接下来的检验步骤与前面一样,暂且不表。
第一种安装方法现在只能在kubuntu系统上面运行,第二种安装方法十分方便,但是deb包安装方式十分不稳定,而且前面两种方法虽然能成功安装cuda,但是在后面编译caffe的时候会出现很多很奇葩的bug,不知道是不是跟cuda安装方式有关系。第三种方法是google上较新的安装方法,虽然有点复杂,但是运行的时候没有什么bug,畅通无阻。综合来说,还是第三种方法较好。
cuDNN可以在官网免费获得,注册帐号后即可下载。官网没有找到安装说明,下载得到的压缩包内也没有Readme. 不过google一下就会找到许多说明。基本原理是把lib文件加入到系统能找到的lib文件夹里, 把头文件加到系统能找到的include文件夹里就可以。这里把他们加到CUDA的文件夹下(参考这里)
tar -zxf cudnn-6.5-linux-x64-v2.tgz
cd cudnn-6.5-linux-x64-v2
sudo cp lib*/usr/local/cuda/lib64/
sudo cp cudnn.h/usr/local/cuda/include/
执行后发现还是找不到库, 报错
error while loading sharedlibraries: libcudnn.so.6.5: cannot open shared object file: No such file ordirectory
而lib文件夹是在系统路径里的,用ls -al发现是文件权限的问题,因此用下述命令先删除软连接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.solibcudnn.so.6.5
然后修改文件权限,并创建新的软连接
sudo chmod u=rwx,g=rx,o=rxlibcudnn.so.6.5.48
sudo ln -s libcudnn.so.6.5.48libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5libcudnn.so
$ sudo ldconfig -v
不做链接,可能会出现这个报错:“./build/tools/caffe:error while loading shared libraries: libcudnn.so.6.5:cannot open sharedobject file: No such file or directory”那是因为cuDNN没有链接成功,只能做一下硬链接。
$ sudo apt-get install libatlas-base-dev
$ sudo apt-getinstall libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-devlibboost-all-dev libhdf5-serial-dev
$ sudo apt-getinstall libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
(1) 切换到Caffe的下载文件夹,然后执行:
$ cpMakefile.config.example Makefile.config
修改新生成的Makefile.config文件,修改“BLAS := mkl”,这个非常重要。(我安装的是atlas,所以默认配置)
编辑确保Makefile.config,启用GPU “# CPU_ONLY := 1”,并设置“USE_CUDNN := 1”。
(2) 编译caffe-master。"-j8"是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。
$ make all -j8
$ make test -j8
$ make runtest-j8
make runtest 的时候可能会出现“You have 2 disabled tests”,这个可以忽略不计。
(3)运行Mnist例子
cd caffe-master
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh
运行上述文件的时候必须切换到caffe主文件夹,否则就会运行错误。
(1)libcudnn.so.6.5:cannot open shared object file,no such file or directory.
可以直接在将自己的库所在路径添加到/etc/ld.so.conf文件中。但一般这个文件中的内容都是一句“include /etc/ld.so.conf.d/*.conf”,因此最好在/etc/ld.so.conf.d/目录下新建一个文件,如“ld-cudnn.conf”,然后将自己的库所在路径添加到这个conf文件中。
修改完文件后,以root身份运行 /sbin/ldconfig -v 。这一步必不可少,别丢了。
(2)如果提示:make: protoc: 命令未找到,那是因为protoc没有安装,安装一下就好了。
$ sudo apt-get installprotobuf-c-compiler protobuf-compiler
(3) error whileloading shared libraries: libcudart.so.7.0: cannot open shared object file
原因分析:LD_LIBRARY_PATH路径设置有问题,少了一个lib64
参考网址:http://github.com/BVLC/caffe/wiki/Install-Caffe-on-EC2-from-scratch-(Ubuntu,-CUDA-7,-cuDNN)
http://www.cnblogs.com/platero/p/3993877.html
http://blog.sina.com.cn/s/blog_491c1b810100l6qe.html
http://caffe.berkeleyvision.org/installation.html
下载网址:
https://developer.nvidia.com/cuda-downloads
https://github.com/BVLC/caffe