http://blog.csdn.net/u010089908/article/details/43538677
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(我现在用的就是这个版本)
方法四:
利用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安装补充案例:
@普兒
楼主您好!我已经安装好了大部分关于caffe的大部分东西,除了matlab,想着暂时可能不需要就先不安装了。但我没有安装Intel MKL 或者OpenBLAS,我就图方便安装了ATLAS。编译时,出现
//usr/lib/x86_64-linux-gnu/libx264.so.142:undefinedreference to '__exp_finite@GLIBC_2.15' 的错误,不知道这是不是因为我安装ATLAS,里面的库少了某些东西呢?
@无声的雨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