您的位置:首页 > Web前端

笔记本+Ubuntu14.04+cuda6.5+caffe的配置详解

2015-02-05 22:25 549 查看

0.本人主要参考了网上已有的两个配置说明(链接见文末),综合拼凑,总结出如下的caffe+Ubuntu14.04+cuda6.5+笔记本的配置方案,当然,这个方案也适用于台式机。(其实笔记本很弱的,跑一下就烫得要死,配置本来就低,也跑不快,try笔记本纯属娱乐+锻炼配置caffe的经验。)

Ps:顺带说一句,除了本配置说明,官方的安装说明也得看看,毕竟人家是官方的。

http://caffe.berkeleyvision.org/installation.html

http://developer.download.nvidia.com/compute/cuda/6_5/rel/docs/CUDA_Getting_Started_Linux.pdf

(ps:多尝试,多学习,由于参考了两文,故许多直接粘贴用了,勿怪。 许多笔记本配置失败可能是因为笔记本配置不行,我的笔记本是thinkpad E430c,大家可作为参照)

ps:硬件要求,intelcpu,NVIDIAgpu

1. 安装build-essentials

安装开发所需要的一些基本包

$ sudo apt-get install build-essential

2. 安装NVIDIA驱动 (3.4.0)

*****************************************************************

我自己使用的方法如下:

准备工作:

1.software更新(GUI)

在$ sudo vi /etc/modprobe.d/blacklist.conf

增加一行: blacklist nouveau

sudo add-apt-repository ppa:xorg-edgers/ppa

2.重启,进入setup设置only核显

3.sudo apt-get --purge remove xserver-xorg-video-nouveau

sudo apt-get --purge remove nvidia-*

4.重启

安装驱动:

1.进入tty1

2.sudo service lightdm stop

3.安装驱动(见下2.2安装驱动的方法一)

4.重启,进入setup设置解除only核显,finished

*****************************************************************

在关闭桌面管理 lightdm 的情况下安装驱动似乎可以实现Intel 核芯显卡 来显示 + NVIDIA 显卡来计算。具体步骤如下:

1. 首先在BIOS设置里选择用Intel显卡来显示或作为主要显示设备(这个安装完驱动重启时记得及时改回来)

2. 进入Ubuntu, 按 ctrl+alt+F1 进入tty1, 登录tty1后输入如下命令

$ sudoservice lightdm stop (重新启用桌面的命令为: $ sudo service lightdm start)

2.1 准备工作,去除自带驱动nouveau的影响

方法一:

在$ sudo vi /etc/modprobe.d/blacklist.conf

增加一行:blacklist nouveau

$ sudo apt-get --purge remove xserver-xorg-video-nouveau
#把官方驱动彻底卸载:


$ sudo apt-get --purge remove nvidia-* #清除之前安装的任何NVIDIA驱动

$ sudo service lightdm stop 命令行,关闭Xserver

$ sudo kill all Xorg

方法二:

1. 将nouveau添加到黑名单,防止它启动

$ cd /etc/modprobe.d

$ sudo vi nvidia-graphics-drivers.conf

写入:blacklist nouveau

保存并退出: wq!

检查:$ cat nvidia-graphics-drivers.conf

2. 对于:/etc/default/grub,添加到末尾(这个感觉没什么用)。

$ sudo vi /etc/default/grub

末尾写入:rdblacklist=nouveau nouveau.modeset=0

sudo update-grub

保存并退出: wq!

检查:$ cat /etc/default/grub

方法三(CUDA官方解决方案,据说可以和方法二连着用,但我没这么干,如果用了方法二驱动还安装不上或者cuda安装出错的同学,可以试下这个):

$ sudo mv /boot/initramfs-$(uname -r).img/boot/initramfs-$(uname -r)-nouveau.img

然后重新生成initrd文件

$ sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)

$ sudo update-initramfs -u

上面那条是nVidia官方提供的命令,不知道为什么在我这里会提示dracut是不存在的命令,也许是版本问题,或者少了什么包,不过无所谓,第二条命令也可以搞定,应该是一样的功能。

2.2 安装驱动

方法一:

输入下列命令添加驱动源

$ sudo add-apt-repository ppa:xorg-edgers/ppa

$ sudo apt-get update

安装340版驱动 (CUDA 6.5.14目前最高仅支持340版驱动, 343, 346版驱动暂不支持)

$ sudo apt-get install nvidia-340

安装完成后, 继续安装下列包 (否则在运行sample时会报错)

$ sudo apt-get install nvidia-340-uvm

安装完成后 reboot.

方法二(GUI界面安装驱动):

System setting ---> Software &Updates ----> Additional Drivers 选择340版驱动(如果没有340版本,可选低一些的,但331版本不要选)

Ps:如果Additional Drivers选项里没有340版本的,建议大家不要下其他版本了,还是采用第三种方法吧。

方法三:

去官网自己下载run包,自己安装,推荐Linux x64 (AMD64/EM64T) Display Driver 版本340.76(我现在用的就是这个版本)

http://www.geforce.cn/drivers

方法四:

利用CUDA6.5.14内置的驱动包安装,但据说可能有问题,有兴趣的同学可以try

Ps:驱动安装完后重启,记得去掉主显为核显(if modified)。

验证驱动 $ cat/proc/driver/nvidia/version

Ps:往后的安装就不需要特地跑到tty1去了。

3. 安装CUDA 6.5

下载cuda_6.5.14_linux_64.run.(手动下载(非命令行)的各种包建议都放在/home/username/下)

https://developer.nvidia.com/cuda-downloads

然后通过下列命令, 将下载得到的.run文件解压成三个文件, 分别为

CUDA安装包: cuda-linux64-rel-6.5.14-18749181.run
NVIDIA驱动: NVIDIA-Linux-x86_64-340.29.run
SAMPLE包: cuda-samples-linux-6.5.14-18745345.run

这里就不安装NVIDIA驱动

$ sudo chmod +x ./ cuda_6.5.14_linux_64.run

$ sudo ./cuda_6.5.14_linux_64.run --extract=extract_path (这是解压成三个文件的命令,路径为绝对路径)

注意, 可能需要通过下面命令给所有.run文件可执行权限

$ chmod +x *.run

3.1 安装CUDA

通过下列命令安装CUDA, 按照说明一步一步安装至完成.

$ sudo ./cuda-linux64-rel-6.5.14-18749181.run

3.1.1 添加环境变量

安装完成后需要在/etc/profile中添加环境变量, 在文件最后添加:

$ export PATH=/usr/local/cuda-6.5/bin:$PATH

保存后, 执行下列命令, 使环境变量立即生效

$ source /etc/profile

3.1.2 添加lib库路径

方法一:

$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH

$ source /etc/profile

方法二:

/etc/ld.so.conf.d/加入文件 cuda.conf, 内容如下

/usr/local/cuda-6.5/lib64

执行下列命令使之立刻生效

$ sudo ldconfig

Ps:cuda官方上只说选其一种方法就可以了,但我尝试只用方法一后,在执行caffe的runtest时找不到cuda的库,所以我又把方法二也做了,然后就找得到了。现在我还不知原因,可能两个步骤都需要,或者只需要做方法二就可以了。

ps:另外在/etc/profile中添加的东西可能应用不到当前用户下,故需要添加相同的内容在自己的.bashrc中。

3.2 安装CUDA SAMPLE

首先安装下列依赖包

$sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

然后用下述命令安装sample文件

$sudo ./cuda-samples-linux-6.5.14-18745345.run

完成后编译Sample文件, 整个过程大概10分钟左右

$cd /usr/local/cuda-6.5/samples

$sudo make

全部编译完成后, 进入samples/bin/x86_64/linux/release, sudo下运行deviceQuery

$ sudo ./deviceQuery

(ps:貌似每次重启完后都要执行一下deviceQuery来“激活”CUDA,否则使用caffe就会出错)

如果出现下列显卡信息,则驱动及cuda安装成功:

./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 635M"

CUDA Driver Version / Runtime Version 6.5 / 6.5

CUDA Capability Major/Minor version number: 2.1

Total amount of global memory: 2048 MBytes (2147155968 bytes)

( 2) Multiprocessors, ( 48) CUDA Cores/MP: 96 CUDA Cores

GPU Clock rate: 1320 MHz (1.32 GHz)

Memory Clock rate: 900 Mhz

Memory Bus Width: 128-bit

L2 Cache Size: 131072 bytes

Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65535), 3D=(2048, 2048, 2048)

Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers

Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers

Total amount of constant memory: 65536 bytes

Total amount of shared memory per block: 49152 bytes

Total number of registers available per block: 32768

Warp size: 32

Maximum number of threads per multiprocessor: 1536

Maximum number of threads per block: 1024

Max dimension size of a thread block (x,y,z): (1024, 1024, 64)

Max dimension size of a grid size (x,y,z): (65535, 65535, 65535)

Maximum memory pitch: 2147483647 bytes

Texture alignment: 512 bytes

Concurrent copy and kernel execution: Yes with 1 copy engine(s)

Run time limit on kernels: Yes

Integrated GPU sharing Host Memory: No

Support host page-locked memory mapping: Yes

Alignment requirement for Surfaces: Yes

Device has ECC support: Disabled

Device supports Unified Addressing (UVA): Yes

Device PCI Bus ID / PCI location ID: 1 / 0

Compute Mode:

< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GT 635M

Result = PASS

4. 安装Intel MKL

在安装之前,可能需要执行以下代码,因为MKL需要一些基础的32bit库

$sudo dpkg --add-architecture i386

$sudo apt-get update

$sudo apt-get install libc6:i386 libncurses5:i386 libstdc++:i386 libstdc++6:i386glibc:i386 libgcc:i386

或者根据MKL安装完时的提示安装那些本没有安装的东西,不过有些库可能还是安装不上,可以不用管,继续往下。

(下载MKL需要序列号的,可以用高校学生邮箱申请,如果没有可以安装OpenBLAS代替)

https://software.intel.com/en-us/intel-education-offerings

解压安装包,下面有一个install_GUI.sh文件, 执行该文件,会出现图形安装界面,根据说明一步一步执行即可。

压缩包建议放在home/username/下

解压:$ tar xzvf parallel_studio_xe_2015_update1.tgz

设权限 $ chmod a+x /home/username/parallel_studio_xe_2015_update1 –R

安装 $ ./parallel_studio_xe_2015_update1/install_GUI.sh

注意: 安装完成后需要添加library路径

$ sudo vi /etc/ld.so.conf.d/intel_mkl.conf

在文件中添加内容

/opt/intel/lib/intel64

/opt/intel/mkl/lib/intel64

注意把路径替换成自己的安装路径。 编辑完后执行

$ sudo ldconfig

5. 安装OpenCV

这个尽量不要手动安装, Github上有人已经写好了完整的安装脚本:https://github.com/jayrambhia/Install-OpenCV

下载该脚本,进入Ubuntu/2.4 目录, 给所有shell脚本加上可执行权限

chmod +x *.sh

然后安装最新版本(当前为2.4.9)

sudo ./opencv2_4_9.sh

脚本会自动安装依赖项,下载安装包,编译并安装OpenCV。整个过程大概半小时左右。

注意,中途可能会报错

opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51):error: a storage class is not allowed in an explicit specialization

解决方法在此:http://code.opencv.org/issues/3814 下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件,
重新build

(ps:我自己采用了一半脚本,把从下载opencv2.4.9.zip开始往后的代码全注释了,然后手动下载了opencv2.4.9.zip,然后替换NCVPixelOperations.hpp,最后再执行剩余脚本)(这个操作很简单的,有编程基础,能大致看明白脚本是干嘛用的就行了)

6. 安装其他依赖项

Ubuntu14.04用户执行

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

其他版本用户参考官方说明:http://caffe.berkeleyvision.org/installation.html

7. 安装Caffe所需要的Python环境(这个我还没整,先用cmdCaffe跑起来了再说)

首先安装pip和python-dev (系统默认有python环境的,不过我们需要的使python-dev)

$ sudo apt-get install python-devpython-pip

然后执行如下命令安装编译caffe python wrapper 所需要的额外包

$ for req in $(cat requirements.txt); dosudo pip install $req; done

在执行上述命令时,会报错导致不能完全安装所有需要的包。可以按照官方建议安装anaconda包。在anaconda官网下载.sh文件,执行,最后添加bin目录到环境变量即可。

建议安装Anaconda包,这个包能独立于系统自带的python库,并且提供大部分Caffe需要的科学运算Python库。这里需要注意,在运行Caffe时,可能会报一些找不到libxxx.so的错误,而用 locate libxxx.so命令发现已经安装在anaconda中,这时首先想到的是在/etc/ld.so.conf.d/ 下面将 $your_anaconda_path/lib 加入 LD_LIBRARY_PATH中。 但是这样做可能导致登出后无法再进入桌面!!!原因(猜测)可能是anaconda的lib中有些内容于系统自带的lib产生冲突。

正确的做法是:为了不让系统在启动时就将anaconda/lib加入系统库目录,可以在用户自己的~/.bashrc中添加library path,比如我就在最后添加了两行

# add library path

LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

开启另一个终端后即生效,并且重启后能够顺利加载lightdm, 进入桌面环境。

官网note:

To import the caffe Python moduleafter completing the installation, add the module directory toyour $PYTHONPATH by exportPYTHONPATH=/path/to/caffe/python:$PYTHONPATH or the like. You should notimport the module in the caffe/python/caffe directory!

Python安装补充案例:

#23楼 2014-12-16 17:08 无声的雨wl

@普兒

楼主您好!我已经安装好了大部分关于caffe的大部分东西,除了matlab,想着暂时可能不需要就先不安装了。但我没有安装Intel MKL 或者OpenBLAS,我就图方便安装了ATLAS。编译时,出现

//usr/lib/x86_64-linux-gnu/libx264.so.142:undefinedreference to '__exp_finite@GLIBC_2.15' 的错误,不知道这是不是因为我安装ATLAS,里面的库少了某些东西呢?

支持(0)反对(0)

#24楼[楼主] 2014-12-16 17:22 普兒

@无声的雨wl

如果你装了anaconda包的话,删除anaconda/lib/下面的 libm

sudo rm -rf libm*

如果是其他情况,我也不是很清楚了。

8. 安装MATLAB(这个也没整)

Caffe提供了MATLAB接口, 有需要用MATLAB的同学可以额外安装MATLAB。 安装教程请自行搜索。

安装完成后添加图标 http://www.linuxidc.com/Linux/2011-01/31632.htm

$ sudo vi/usr/share/applications/Matlab.desktop

输入以下内容

[Desktop Entry]

Type=Application

Name=Matlab

GenericName=Matlab 2010b

Comment=Matlab:The Language of TechnicalComputing

Exec=sh /usr/local/MATLAB/R2010b/bin/matlab-desktop

Icon=/usr/local/MATLAB/Matlab.png

Terminal=false

Categories=Development;Matlab;

(I use the R2013b patched package.First you should uncompress the .iso file. Then use sudo cp tocopy the patch file)

9. 编译Caffe

进入caffe根目录,首先复制一份Makefile.config

cp Makefile.config.example Makefile.config

然后修改里面的内容,主要需要修改的参数包括

CPU_ONLY 是否只使用CPU模式,没有GPU没安装CUDA的同学可以打开这个选项

BLAS (使用intel mkl还是OpenBLAS)

MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径, 如/usr/local/MATLAB/R2013b(注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)

DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序

完成设置后,开始编译

make all -j4

make test

make runtest

注意 -j4 是指使用几个线程来同时编译,可以加快速度, j后面的数字可以根据CPU core的个数来决定,我的CPU使4核,所以-j4.

我的runtest的结果(只粘贴了末尾一段):

OK ] MathFunctionsTest/1.TestSignCPU (16 ms)

[ RUN ] MathFunctionsTest/1.TestAsumGPU

[ OK ] MathFunctionsTest/1.TestAsumGPU (16 ms)

[ RUN ] MathFunctionsTest/1.TestHammingDistanceCPU

[ OK ] MathFunctionsTest/1.TestHammingDistanceCPU (17 ms)

[ RUN ] MathFunctionsTest/1.TestScaleGPU

[ OK ] MathFunctionsTest/1.TestScaleGPU (17 ms)

[ RUN ] MathFunctionsTest/1.TestSgnbitCPU

[ OK ] MathFunctionsTest/1.TestSgnbitCPU (15 ms)

[ RUN ] MathFunctionsTest/1.TestCopyGPU

[ OK ] MathFunctionsTest/1.TestCopyGPU (16 ms)

[ RUN ] MathFunctionsTest/1.TestCopyCPU

[ OK ] MathFunctionsTest/1.TestCopyCPU (16 ms)

[----------] 14 tests fromMathFunctionsTest/1 (204 ms total)

[----------] Global test environmenttear-down

[==========] 838 tests from 169 test casesran. (135998 ms total)

[ PASSED ] 838 tests.

YOUHAVE 2 DISABLED TESTS

Ps:那个2个缺陷不知道是什么情况,我看其他一些人好像也是这样的提示,反正暂时不影响,先无视吧。

9.1. 编译Matlabwrapper

执行如下命令

make matcaffe

然后就可以跑官方的matlab demo啦。

9.2. 编译Pythonwrapper

make pycaffe

然后基本就全部安装完拉.

接下来大家尽情地跑demo吧~

----------------------------------

官方note:

Compilation

Now that you have the prerequisites, edityour Makefile.config to change the paths for your setup (you shouldespecially uncomment and set BLAS_LIB accordingly on distributionslike CentOS / RHEL / Fedora where ATLAS is installedunder /usr/lib[64]/atlas)
The defaults should work, but uncomment the relevant lines if using Anaconda Python.

cp Makefile.config.example Makefile.config

# Adjust Makefile.config (for example, ifusing Anaconda Python)

make all

make test

make runtest

To compile with cuDNN acceleration, youshould uncomment the USE_CUDNN := 1 switch inMakefile.config.

错误Fixed:

1. 如果提示: make:protoc: 命令未找到,那是因为protoc没有安装,安装一下就好了。

protobuf-c-compiler protobuf-compiler

2. 提示“src/caffe/util/math_functions.cu(140): error: callinga host function("std::signbit ") froma globalfunction("caffe::sgnbit_kernel ") is not allowed”

解决办法:

修改 ./include/caffe/util/math_functions.hpp 224行

删除(注释):using std::signbit;

修改:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = signbit(x[i]));

为:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = std::signbit(x[i]));

这个方法感谢网友:嗆熱DJ$998。

10.使用MNIST数据集进行测试

Caffe默认情况会安装在$CAFFE_ROOT,就是解压到那个目录,例如:$ home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录(这个很重要,执行任何脚本时你都要处于Caffe的根目录)。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:

1. 数据预处理

可以用下载好的数据集,也可以重新下载,我网速快,这里就偷懒直接下载了,具体操作如下:

$ cd data/mnist

$ ./get_mnist.sh

Ps:做这个时,我竟然下不动数据,无奈,跟道友要了一份。

2. 重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式

$ sudo examples/mnist /create_mnist.sh

生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集

3. 训练mnist

$ sudo examples/mnist/train_lenet.sh

Ps:训练结果就不贴了,因为忘记粘了,大概总共花了10分钟吧,笔记本确实慢啊,纯属娱乐。

11. 安装cuDNN

为了加速Caffe,可以安装cuDNN,参见这篇文章:NVIDIA CuDNN安装说明

参考来源:http://94it.net/a/jingxuanboke/2014/0831/395722_4.html
http://94it.net/a/jingxuanboke/2015/0118/451320.html
/article/6001660.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: