zoukankan      html  css  js  c++  java
  • Ubuntu14.04 64bit下Caffe + CUDA 6.5安装详细步骤

      不多说,直接上干货!

      笔者花了很长时间才装完,主要是cuda安装和opencv安装比较费劲,cuda找不到32位的安装包只好重装64位的ubuntu系统,opencv 也是尝试了很久才解决,这里建议用2.4.9版本。其实如果没用GPU的话不需要安装cuda,不过为了后续兼容性的考虑,系统强烈建议64位的。下面是 对自己的安装过程记录备忘,有些主要参考网上的文章,所以有些过程就直接用了原来文章中的内容。


    caffe在git上的源码:https://github.com/BVLC/caffe


    环境:
        ubuntu 14.04 64位
        无GPU


    准备工作:
      *首先验证你是否有nvidia的显卡(http://developer.nvidia.com/cuda-gpus这个网站查看你是否有支持gpu的显卡):
    lspci | grep -i nvidia    *查看linux发行版本 uname -m && cat /etc/*release 看第一行  *看gcc版本lspci | grep -i nvidia    *查看linux发行版本 uname -m && cat /etc/*release 看第一行  *看gcc版本 gcc --version 

    Step1、安装cuda(无GPU安装可以直接跳过这一步,所以这里直接跳过。要说明的是cuda 32位尚未找到合适的安装包,所以这里的linux要64位的)
      *在cuda官网(https://developer.nvidia.com/cuda-downloads#linux)下载对应版本.

      *下载完成之后可以使用如下命令安装它,注意文件名修改为cuda-repo-ubuntu1404_6.5-14_amd64.deb
    sudodpkgicudarepo<distro><version><architecture>.deb(deb)NetworkInstallLocalInstall线线Q:WhatisthedifferencebetweentheNetworkInstallerandtheLocalInstaller?A:TheLocalInstallerhasallofthecomponentsembeddedintoit(toolkit,driver,samples).Thismakestheinstallerverylarge,butoncedownloaded,itcanbeinstalledwithoutaninternetconnection.TheNetworkInstallerisasmallexecutablethatwillonlydownloadthenecessarycomponentsdynamicallyduringtheinstallationsoaninternetconnectionisrequired.sudodpkg−icuda−repo−<distro><version><architecture>.deb(或者在图形界面下直接双击下载的deb文件)NetworkInstall和LocalInstall的区别:一个是文件小,在线更新;一个是文件大,可以离线安装。(Q:WhatisthedifferencebetweentheNetworkInstallerandtheLocalInstaller?A:TheLocalInstallerhasallofthecomponentsembeddedintoit(toolkit,driver,samples).Thismakestheinstallerverylarge,butoncedownloaded,itcanbeinstalledwithoutaninternetconnection.TheNetworkInstallerisasmallexecutablethatwillonlydownloadthenecessarycomponentsdynamicallyduringtheinstallationsoaninternetconnectionisrequired.)安装好仓库文件后,更新本地仓库:sudo apt-get update
    最后开始安装cuda以及显卡驱动(安装cuda的同时就会把显卡驱动也全部安装好,这个真的很方便。但是下载的时间有点长。)
    sudoaptgetinstallcudasudoapt−getinstallcuda安装完之后你需要设置环境变量: export PATH=/usr/local/cuda-6.5/bin:PATHPATH export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:LDLIBRARYPATHcuda<dir><dir> LDLIBRARYPATH设置完毕之后,你还可以选择是否安装cuda附带的示例代码(<dir>表示你要安装的位置,你可以将<dir>替换成 ): cuda-install-samples-6.5.sh <dir>  

      接下来做一些验证工作(我的电脑没有GPU,所以验证跳过):
    查看显卡的驱动版本
        cat /proc/driver/nvidia/version  
    查看nvcc编译器的版本
        nvcc -V i  
    编译cuda的示例代码:
        cd ~/NVIDIA_CUDA-6.5_Samples  

    然后make一下编译代码。
    进入bin路径运行devicequery
        cd ~/NVIDIA_CUDA-6.5_Samples/bin  
        ./ deviceQuery  


    Step2、预装依赖准备
    Caffe has several dependencies.

        CUDA is required for GPU mode.
            library version 7.0 and the latest driver version are recommended, but 6.* is fine too
            5.5, and 5.0 are compatible but considered legacy
        BLAS via ATLAS, MKL, or OpenBLAS.
        Boost >= 1.55
        OpenCV >= 2.4 including 3.0
        protobuf, glog, gflags
        IO libraries hdf5, leveldb, snappy, lmdb

    Pycaffe and Matcaffe interfaces have their own natural needs.

        For Python Caffe: Python 2.7 or Python 3.3+, numpy (>= 1.7), boost-provided boost.python
        For MATLAB Caffe: MATLAB with the mex compiler.

    cuDNN Caffe: for fastest operation Caffe is accelerated by drop-in integration of NVIDIA cuDNN. To speed up your Caffe models, install cuDNN then uncomment the USE_CUDNN := 1 flag in Makefile.config when installing Caffe. Acceleration is automatic. For now cuDNN v1 is integrated but see PR #1731 for v2.

    CPU-only Caffe: for cold-brewed CPU-only Caffe uncomment the CPU_ONLY := 1 flag in Makefile.config to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment.
    (最后一步在编译caffe前会说明)

    具体操作:
    下面3个应该在build-essential里了,不过这里保险起见,我先装上了。
        sudo apt-get install g++
        sudo apt-get install git
        sudo apt-get install freeglut3-dev
    build-essential:
        sudo apt-get install build-essential
        sudo apt-get update
    安装ATLAS for Ubuntu:
         # sudo apt-get install libatlas-base-dev
         # sudo apt-get install libprotobuf-dev
         # sudo apt-get install libleveldb-dev
         # sudo apt-get install libsnappy-dev
         # sudo apt-get install libopencv-dev
         # sudo apt-get install libboost-all-dev
         # sudo apt-get install libhdf5-serial-dev
         # sudo apt-get install libgflags-dev
         # sudo apt-get install libgoogle-glog-dev
         # sudo apt-get install liblmdb-dev
         # sudo apt-get install protobuf-compiler

    安装Opencv:
         # cd ~/caffe
         # git clone https://github.com/jayrambhia/Install-OpenCV
         # cd Install-OpenCV/Ubuntu
         # sudo ./dependencies.sh
         # cd 2.4
         # sudo sh ./opencv2_4_9.sh
    *这里有几点要注意的,也是花了很长时间解决的一个坑:
        首先2.4.8的源找不到了,所以不要用2.4.8
        其次2.4.10编译有问题,不过可以尝试解决下,这里没用
    这里最好不要自己直接装,因为有很多的依赖,去
    git clone https://github.com/jayrambhia/Install-OpenCV
    或者https://github.com/jayrambhia/Install-OpenCV都可以下载脚本。
    这里最新的就是2.4.9,如果要装2.4.10的话把脚本拷贝一份做对应修改就行了。
        *由于wget opencv2.4.9.zip源文件非常慢,这里的办法是去sourceforge对应下载页面,选择其他服务器下载镜像,可以下载到本地,注意同时修改相应脚本,把wget注释掉。
        make opencv的时候会报错,这里将脚本的cmake替换为如下:
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=OFF -D WITH_CUDA=OFF -D WITH_CUFFT=OFF ..
    即加上最后3个,编译ok,然后继续。


    Step3:编译Caffe
    下载caffe安装包,下载地址:https://github.com/BVLC/caffe
        解压该压缩包,解压缩命令:
        unzip /home/liuxiabing/下载/caffe-master.zip  
        注:如果解压位置出错了,可以使用以下命令删除该目录及所有的子目录:
        sudo rm -rf caffe-master  

        进入caffe根目录, 首先复制一份Makefile.config,命令:
        cp Makefile.config.example Makefile.config  

        然后修改里面的内容,主要需要修改的参数包括:
        CPU_ONLY 是否只使用CPU模式,由于我没有NVIDIA的显卡,就没有安装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,也可以不添加这个参数,直接使用“make all”,这样速度可能会慢一点儿。


    Step4:利用mnist数据集进行测试
    *运行下载数据的脚本的时候发现mnist数据网站打不开,幸好之前在ufldl实验中保存了一份mnist的数据集,放到data/mnist目录下重命名了一下最后直接运行ok。
    使用MNIST数据集进行测试
        Caffe默认情况会安装在CAFFEROOTCAFFEROOT,就是解压到的那个目录,例如: home/username/caffe-master,所以下面的工作,
    默认已经切换到了该工作目录。下面的工作主要是测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:
    http://caffe.berkeleyvision.org/gathered/examples/mnist.html
        (1)数据预处理
        可以用下载好的数据集,也可以重新下载,直接下载的具体操作如下:
        cddata/mnistcddata/mnist sudo sh ./get_mnist.sh  

        (2)重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式,执行命令如下: 
        sudo sh ./examples/mnist/create_mnist.sh        生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集     注:新版caffe都需要从根目录上执行,如果使用下列命令执行:     # cd examples/mnist       # sudo sh ./create_mnist.sh        可能会遇到这个错误:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found     (3)训练mnist     如果没有GPU,只有CPU的话,需要先修改examples/mnist目录下lenet_solver.prototxt文件,将solver_mode:GPU改为      solver_mode:CPU,修改后结果如下所示:     # solver mode: CPU or GPU       solver_mode: CPU        修改时可以使用vi编辑命令,如果是只读文件,不能编辑,可以用sudo命令,比如:     sudo vi lenet_solver.prototxt         先进入命令模式,使用a进入编辑模式,修改完之后,使用esc退出编辑模式,进入末行模式,再使用“:wq”保存修改并退出(“:q!”为退出但不保存修改)    修改完成后,再执行下面的命令进行训练:sudo sh ./examples/mnist/create_mnist.sh        生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集     注:新版caffe都需要从根目录上执行,如果使用下列命令执行:     # cd examples/mnist       # sudo sh ./create_mnist.sh        可能会遇到这个错误:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found     (3)训练mnist     如果没有GPU,只有CPU的话,需要先修改examples/mnist目录下lenet_solver.prototxt文件,将solver_mode:GPU改为      solver_mode:CPU,修改后结果如下所示:     # solver mode: CPU or GPU       solver_mode: CPU        修改时可以使用vi编辑命令,如果是只读文件,不能编辑,可以用sudo命令,比如:     sudo vi lenet_solver.prototxt         先进入命令模式,使用a进入编辑模式,修改完之后,使用esc退出编辑模式,进入末行模式,再使用“:wq”保存修改并退出(“:q!”为退出但不保存修改)    修改完成后,再执行下面的命令进行训练:cd examples/mnist  
        $ sudo sh ./train_lenet.sh  

    最终训练完的模型存储为一个二进制的protobuf文件,CPU模式下训练这样的数据集大概需要20分钟,比较慢。至此,Caffe安装的所有步骤完结。

    1. 安装build-essentials

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

    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后输入如下命令

    sudo service lightdm stop

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

    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.

    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驱动

    cuda6.5.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中添加环境变量, 在文件最后添加:

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

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

    source /etc/profile

    3.1.2 添加lib库路径

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

    /usr/local/cuda-6.5/lib64

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

    sudo ldconfig

    3.2 安装CUDA SAMPLE

    首先安装下列依赖包

    sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev 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

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

    复制代码
    复制代码
    ./deviceQuery Starting...
    
     CUDA Device Query (Runtime API) version (CUDART static linking)
    
    Detected 1 CUDA Capable device(s)
    
    Device 0: "GeForce GTX 670"
      CUDA Driver Version / Runtime Version          6.5 / 6.5
      CUDA Capability Major/Minor version number:    3.0
      Total amount of global memory:                 4095 MBytes (4294246400 bytes)
      ( 7) Multiprocessors, (192) CUDA Cores/MP:     1344 CUDA Cores
      GPU Clock rate:                                1098 MHz (1.10 GHz)
      Memory Clock rate:                             3105 Mhz
      Memory Bus Width:                              256-bit
      L2 Cache Size:                                 524288 bytes
      Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
      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: 65536
      Warp size:                                     32
      Maximum number of threads per multiprocessor:  2048
      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): (2147483647, 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 GTX 670
    Result = PASS
    复制代码
    复制代码

     4. 安装Intel MKL 

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

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

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

    在文件中添加内容

    /opt/intel/lib
    /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。

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

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

    sudo apt-get install python-dev python-pip

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

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

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

    2014-12-03更新

    建议安装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, 进入桌面环境。

    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 Technical Computing
    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 to copy the patch file)

    9. 编译Caffe

    终于完成了所有环境的配置,可以愉快的编译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.

    然后去尿个尿,喝杯茶, 回来就差不多编译好了..

    9.1. 编译Matlab wrapper

    执行如下命令

    make matcaffe

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

    9.2. 编译Python wrapper

     make pycaffe 

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

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

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

    10. 安装cuDNN

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

  • 相关阅读:
    3.6 批量维护来源准则/查看来源准则
    3.5 供货比例(来源准则)控制
    3.4 新供应商引入
    3.3 集团化采购管理
    3.2 采购管理目标
    3.1 采购管理规划
    2.8 生产辅料管理
    2.7 车间任务的批量移动和批量完工入库
    2.6 自动更新车间任务的供应类型和完工子库
    2.5 总装与部装跟单任务的同步发放
  • 原文地址:https://www.cnblogs.com/zlslch/p/6972911.html
Copyright © 2011-2022 走看看