在编译Caffe的漫长过程中,经过了一个又一个坑,掉进去再爬出来,挺有趣的。对比原文有修改

LInux下配置安装:(本文档使用同一块NVIDIA显卡进行显示与计算, 如分别使用不同的显卡进行显示和计算,则可能不适用。)

原文链接:http://blog.sciencenet.cn/blog-1583812-841855.html

参考链接:http://www.cnblogs.com/platero/p/3993877.html

官方文档:http://caffe.berkeleyvision.org/installation.html

1. 安装build-essentials

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

  1.  
  1. sudo apt-get install build-essential

2. 安装NVIDIA驱动 (3.4.0)

2.1 准备工作(2014-12-03更新)

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

1. 首先在BIOS设置里选择用Intel显卡来显示或作为主要显示设备

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

  1. sudo service lightdm stop

该命令会关闭lightdm。如果你使用 gdm或者其他的desktop manager, 请在安装NVIDIA驱动前关闭他。

2.2 安装驱动

输入下列命令添加驱动源

  1. sudo add-apt-repository ppa:xorg-edgers/ppa
  2. sudo apt-get update

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

  1. sudo apt-get install nvidia-340

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

  1. sudo apt-get install nvidia-340-uvm

安装完成后 reboot.

3. 安装CUDA 6.5

点击此链接】 下载CUDA 6.5.

然后通过下列命令, 将下载得到的.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驱动

  1. cuda6.5.run --extract=extract_path

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

  1. chmod +x *.run

3.1 安装CUDA

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

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

3.1.1 添加环境变量

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

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

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

  1. source /etc/profile

3.1.2 添加lib库路径

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

  1. /usr/local/cuda-6.5/lib64

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

  1. sudo ldconfig

3.2 安装CUDA SAMPLE

首先安装下列依赖包

  1. sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev

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

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

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

  1. cd /usr/local/cuda-6.5/samples
  2. sudo make

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

  1.  
  1. sudo ./deviceQuery

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

  1. ./deviceQuery Starting...
  2. CUDA Device Query (Runtime API) version (CUDART static linking)
  3.  
  4. Detected 1 CUDA Capable device(s)
  5.  
  6. Device 0: "GeForce GTX 670"
  7. CUDA Driver Version / Runtime Version 6.5 / 6.5
  8. CUDA Capability Major/Minor version number: 3.0
  9. Total amount of global memory: 4095 MBytes (4294246400 bytes)
  10. ( 7) Multiprocessors, (192) CUDA Cores/MP: 1344 CUDA Cores
  11. GPU Clock rate: 1098 MHz (1.10 GHz)
  12. Memory Clock rate: 3105 Mhz
  13. Memory Bus Width: 256-bit
  14. L2 Cache Size: 524288 bytes
  15. Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  16. Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
  17. Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
  18. Total amount of constant memory: 65536 bytes
  19. Total amount of shared memory per block: 49152 bytes
  20. Total number of registers available per block: 65536
  21. Warp size: 32
  22. Maximum number of threads per multiprocessor: 2048
  23. Maximum number of threads per block: 1024
  24. Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  25. Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
  26. Maximum memory pitch: 2147483647 bytes
  27. Texture alignment: 512 bytes
  28. Concurrent copy and kernel execution: Yes with 1 copy engine(s)
  29. Run time limit on kernels: Yes
  30. Integrated GPU sharing Host Memory: No
  31. Support host page-locked memory mapping: Yes
  32. Alignment requirement for Surfaces: Yes
  33. Device has ECC support: Disabled
  34. Device supports Unified Addressing (UVA): Yes
  35. Device PCI Bus ID / PCI location ID: 1 / 0
  36. Compute Mode:
  37. < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
  38.  
  39. deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GTX 670
  40. Result = PASS

4. 安装Intel MKL

(如果没有可以安装OpenBLAS代替)解压安装包,下面有一个install_GUI.sh文件, 执行该文件,会出现图形安装界面,根据说明一步一步执行即可。

1.安装 MKL

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

  1.  
  1. sudo gedit /etc/ld.so.conf.d/intel_mkl.conf

在文件中添加内容

  1. /opt/intel/lib
  2. /opt/intel/mkl/lib/intel64

2.或者 安装 OpenBLAS

  1.  
  1. Install ATLAS/MKL/OpenBLAS if you haven't already.
  2. $ sudo apt-get install libopenblas-dev
  3. or
  4. $ sudo apt-get install libopenblas-base
(这里我按照这样的方法最终编译出现cblas找不到的问题,应该是MKL安装有问题,但是又没办法解决,最终我就按照官网的方法安装了ATLAS:
sudo apt-get install libatlas-base-dev
一句话就搞定,虽然性能可能比不上MKL,但是将就着能用就行。)

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

  1. sudo ldconfig

5. 安装OpenCV

这个尽量不要手动安装, Github上有人已经写好了完整的安装脚本:

  1. https://github.com/jayrambhia/Install-OpenCV

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

  1. chmod +x *.sh

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

http://code.opencv.org/issues/3814  下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件,
重新build。

  1. sudo ./opencv2_4_9.sh

(注意,修改一下 文件里面的编译选项,一直开 make j4, 导致CPU 总是热导致停机,半途而废。

应修改为 j2 ,或者去掉j选项

脚本会自动安装依赖项,下载安装包,编译并安装OpenCV。

整个过程大概半小时左右。

注意,中途可能会报错(这一次真的报错了!!!

  1. 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。

6. 安装其他依赖项

Ubuntu14.04用户执行

  1. 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环境

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

  1. sudo apt-get install python-dev python-pip

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

  1. for req in $(cat requirements.txt); do sudo 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, 比如我就在最后添加了两行

  1. # add library path
  2. LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH
  3. export LD_LIBRARY_PATH

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

8. 安装MATLAB

Caffe提供了MATLAB接口, 有需要用MATLAB的同学可以额外安装MATLAB。

安装教程请自行搜索。

一般过程是:

1.下载matlab iso镜像文件(。搜索matlab unix版可得到,我下的是2010a)

2. 打开终端,输入

sudo mkdir /mnt/temp (建立临时文件夹存放装载后的iso文件);

sudo mount -o loop /路径/Matlab.R2010a.UNIX.ISO-TBE.iso  /mnt/temp
(绿色路径为matlab iso文件所在位置),回车后装载镜像文件完成。

3. 创建安装matlab的文件夹(可以自己决定位置,但是要记住,后面会用到,eg: /usr/local/matlab)。

创建命令: sudo mkdir /usr/local/matlab

4. 开始安装sudo /mnt/temp/install 此时会弹出类似于windows下安装的图形化安装界面,选择不联网安装

会提示输入序列号,序列号在 /mnt/temp/crack 文件夹下的install文件里,或者serials的TXT文件里。

选择安装路径为你在第三步创建的文件夹。安装接近最后 会问你是不是需要激活,选择不联网激活,

选择 /mnt/temp/crack 文件夹下的lic_standalone.dat文件或者serials 里面的lic文件即可。

激活成功!

5. 安装完成后卸载镜像文件。sudo umount /mnt/temp

************************ 至此安装部分顺利完成,接下来是如何启动 *********************************

1. 在终端启动,进入安装matlab的路径并进入bin文件夹,在终端输入./matlab -desktop

或者,linux桌面直接建立一个指向文件的快捷方式。

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

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

输入以下内容

  1. [Desktop Entry]
  2. Type=Application
  3. Name=Matlab
  4. GenericName=Matlab 2010b
  5. Comment=Matlab:The Language of Technical Computing
  6. Exec=sh /usr/local/MATLAB/R2010b/bin/matlab -desktop
  7. Icon=/usr/local/MATLAB/Matlab.png
  8. Terminal=false
  9. Categories=Development;Matlab;

(I use the R2013b patched package. First you should uncompress the .iso file. Then usesudo cp to copy the patch file)

9. 编译Caffe

终于完成了所有环境的配置,可以愉快的编译Caffe了! 进入caffe根目录, 首先复制一份Makefile.config

  1. cp Makefile.config.example Makefile.config

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

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

BLAS (使用intel mkl还是OpenBLAS)(由于我安装了atlas,所以不需要修改默认设置!

MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径,

如我的路径为 /usr/local/MATLAB/R2013b (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)

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

完成设置后, 开始编译

  1. make all -j4
  2. make test
  3. make runtest

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

9.1. 编译Matlab wrapper

执行如下命令

  1. make matcaffe

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

9.2. 编译Python wrapper

  1. make pycaffe

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

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

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

10. 安装cuDNN

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

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



Caffe默认情况会安装在CAFFEROOT,就是解压到那个目录,例如:

home/username/caffe-master,

所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
1. 数据预处理
可以用下载好的数据集,也可以重新下载,我网速快,这里就偷懒直接下载了,具体操作如下:
  1. $ cd data/mnist
  2. $ sudo sh ./get_mnist.sh
2. 重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式
  1. $ cd examples/mnist
  2. $ sudo sh ./create_mnist.sh sudo sh examples/mnist/create_mnist.sh
生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集
PS: 这里可能会遇到一个报错信息:
Creating lmdb...
./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found
解决方法是,直接到Caffe-master的根目录执行,实际上新版的Caffe,基本上都得从根目录执行。
~/caffe-master$ sudo sh examples/mnist/create_mnist.sh

3. 训练mnist
  1. $ sudo sh examples/mnist/train_lenet.sh

至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPU和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。

                

测试平台:
  1. i7-4770K/16G/GTX 770/CUDA 6.5
  2. MNIST Windows8.1 on CPU620s
  3. MNIST Windows8.1 on GPU190s
  4. MNIST Ubuntu 14.04 on CPU270s
  5. MNIST Ubuntu 14.04 on GPU160s
  6. MNIST Ubuntu 14.04 on GPU with cuDNN35s
  7. Cifar10_full on GPU wihtout cuDNN73m45s = 4428s (Iteration 70000
  8. Cifar10_full on GPU with cuDNN20m7s = 1207s (Iteration 70000

Caffe+UbuntuKylin14.04_X64+CUDA 6.5配置的更多相关文章

  1. Caffe+Kubuntu16.04_X64+CUDA 8.0配置

    前言: 经过尝试过几次Caffe,theano,MxNet之后,很长时间没有进行caffe的更新,此次在Ubuntu16.04下安装Caffe,折腾了一天时间,终于安装成功. 参考链接:Caffe+U ...

  2. Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn

    一.版本 linux系统:Ubuntu 14.04 (64位) 显卡:Nvidia K20c cuda: cuda_7.5.18_linux.run cudnn: cudnn-7.0-linux-x6 ...

  3. CUDA & cuDNN环境配置

    环境 python3.5 tensorflow 1.3 VUDA  8.0 cuDNN V6.0 1.确保GPU驱动已经安装 lspci | grep -i nvidia 通过此命令可以查看GPU信息 ...

  4. 【软件安装与环境配置】ubuntu16.04+caffe+nvidia+CUDA+cuDNN安装配置

    前言 博主想使用caffe框架进行深度学习相关网络的训练和测试,刚开始做,特此记录学习过程. 环境配置方面,博主以为最容易卡壳的是GPU的NVIDIA驱动的安装和CUDA的安装,前者尝试的都要吐了,可 ...

  5. Caffe + Ubuntu 14.04 64bit + 无CUDA(linux下安装caffe(无cuda)以及python接口)

    安装Caffe指导书 环境: Linux 64位 显卡为Intel + AMD,非英伟达显卡 无GPU 一. 安装准备工作 1. 以管理员身份登录 在左上角点击图标,搜索terminal(即终端),以 ...

  6. 64位win10+cuda8.0+vs2013+cuDNN V5下Caffe的编译安装教程并配置matlab2014a 接口

    一.需要安装的软件 1)vs2013,我是在http://www.52pojie.cn/thread-492326-1-1.html这个网址安装的.我之前用的是vs2012,按照网上的配置教程会爆各种 ...

  7. Windows10+VS2013+caffe+Python2.7+CUDA8.0 部署配置

    所需环境工具: 1. Windows 10 2. VS2013 3. Windows版本的caffe工具包,地址:https://github.com/Microsoft/caffe 4. Anaco ...

  8. Caffe Ubuntu14.04 + CUDA 8 (支持GTX1080 1070等Pascal架构显卡)

    1. 前言 本教程使用的系统是Ubuntu 14.04 LTS 64-bit,使用的CUDA版本为8. 理论上本教程支持Pascal架构显卡,如游戏卡GeForce GTX1070,GTX 1080, ...

  9. CUDA安装及配置:Windows 7 64位环境

    最近又有新的项目要做了,这次是关于CUDA---多核高性能计算的问题,所以最近一直在学习CUDA的编程问题,昨天安装软件完毕,运行第一个程序的时候还是遇到很多问题.所以这里给大家一起分享一下, 有和我 ...

随机推荐

  1. 如何查看系统的界面,比如费用申请单的序时簿界面引用的是哪一个ListUi.快捷键alt+shift+d 然后选中该ListUI大框框,就可以看到引用的是哪一个了.

    如何查看系统的界面,比如费用申请单的序时簿界面引用的是哪一个ListUi.快捷键alt+shift+d 然后选中该ListUI大框框,就可以看到引用的是哪一个了.

  2. 【剑指Offer】60、把二叉树打印成多行

      题目描述:   从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行.   解题思路:   本题可类比第22题:从上往下打印二叉树,这两道题实际上是一回事,只不过这里我们多了一个分行打印 ...

  3. 2019 gplt团体程序设计天梯赛总结

    分很菜… 以后写题一定记得把题意理清楚了再开始写. 模拟题还是大坑,代码还是写得不够多,代码量一大就写bug. 补题 l1-8 估值一亿的AI核心代码 补题链接:https://pintia.cn/p ...

  4. CSS学习笔记之基本介绍

    1.简介 层叠样式表(Cascading Style Sheets,CSS)允许我们把样式设置存储在文件中,从而将内容与表现分离 当同一个 HTML 元素被不只一个样式定义时,最终的样式确定顺序如下( ...

  5. vue中访问数据接口的配置

    业务API接口地址: http://localhost:3816/api/ 前端UI浏览地址:http://127.0.0.1:8080/#/home 由于同源策略的问题: 需要配置代理: 在开发环境 ...

  6. 2.2 SVN的简单使用

    1.打开SVN服务器 选中Repositories→右键→Create new Repositories 选中Test2→右键→Copy URL to Clipboard 打开记事本粘贴地址:http ...

  7. BZOJ 4244 邮戳拉力赛 (DP)

    手动博客搬家: 本文发表于20181211 18:01:21, 原地址https://blog.csdn.net/suncongbo/article/details/84957907 为了防止我的博客 ...

  8. lucene_02_IKAnalyre

    前言 在lucene中虽然已经提供了许多的分词器:StandardAnalyzer.CJKAnalyzer等,但在解析中文的时候都会把文中拆成一个个的单子. 毕竟老外不懂中文.这里介绍一个中文的分词器 ...

  9. 通过fmt标签格式化el表达式中的日期、小数

    首先引入fmt外部文件包 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" % ...

  10. 0926mysql join的原理

    转自 http://www.cnblogs.com/shengdimaya/p/7123069.html MySQL JOIN原理   先看一下实验的两张表: 表comments,总行数28856 表 ...