cuda7.0+ caffe 小白安装手记

    本人是linux新手,在历时两个星期的纠结的caffe安装之路后,终于在昨天成功用上了caffe!先说说我的电脑配置吧,戴尔Optiplex 990主机,Q67主板,Geforce GTX960 显卡。这一系列的主机特别坑爹,我装上显卡后系统就切不了tty界面了,后面想在Bios里面启用集显禁用独显,结果发现这台主机没有切换显卡的功能!所幸后面找到了解决方法(在下文有)。总之,这次的安装之路让我明白坚持才是最重要的,还有,就是不要老想着重装系统,重装系统并不会彻底解决问题,如果不去解决bug的话,就永远会有未知的新bug等着你。

1  CUDA的安装

CUDA的安装包括很多种方法。由于像freeglut3-dev这些库在当前的ubuntu14.04系统中安装不了,但在Kubuntu系统中可以安装,因此可以在这两个系统中安装CUDA的方法不一样。

1.1          Kubuntu14.04系统+cuda手动安装

首先验证你是否有nvidia的显卡(http://developer.nvidia.com/cuda-gpus个网站查看你是否有支持gpu的显卡):&lspci|grep -i nvidia
   查看你的linux发行版本(主要是看是64位还是32位的):$uname –m && cat/etc/*release
   看一下gcc的版本:$gcc –version

1)准备好CUDA Toolkit(在此之前千万不要更新系统!!!)

根据官网介绍,之前安装的版本都会有冲突的嫌疑,所以之前安装的ToolkitDrievers就得卸载,屏蔽,等等。

$ 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装上NvidiaGTX 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

1.2  ubuntu系统+CUDA deb包安装

首先在官网上下载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附带的示例代码(<dir>表示你要安装的位置,你可以将<dir>替换成~):

$ cuda-install-samples-7.0.sh <dir>  

然后检验。

 

1.3         ubuntu系统+手动安装cuda

1.3.1 安装NVIDIA驱动

(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.

1.3.2  安装CUDA

  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

1.3.3 安装cuda sample

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

 

接下来的检验步骤与前面一样,暂且不表。

cuda安装方法的比较:

第一种安装方法现在只能在kubuntu系统上面运行,第二种安装方法十分方便,但是deb包安装方式十分不稳定,而且前面两种方法虽然能成功安装cuda,但是在后面编译caffe的时候会出现很多很奇葩的bug,不知道是不是跟cuda安装方式有关系。第三种方法是google上较新的安装方法,虽然有点复杂,但是运行的时候没有什么bug,畅通无阻。综合来说,还是第三种方法较好。

2 安装配置cuDNN  

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没有链接成功,只能做一下硬链接。

 

3  caffe的安装

3.1  Atlas安装

$ sudo apt-get install libatlas-base-dev

3.2  其他依赖项,确保都成功

$ 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

3.3 下载caffe-master.zip,并解压。

 (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主文件夹,否则就会运行错误。

3.4  编译过程中可能出现的的错误:

(1)libcudnn.so.6.5cannot open shared object fileno 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

 

 

没有更多推荐了,返回首页