实战caffe-第一天 caffe+cuda6.5+cudnn6.5+opencv2.4.9+atlas的安装

注:linux+caffe小白,以下文档仅记录学习点滴。网上有很多教程,一定要根据自己硬件条件选择各个安装包的版本,这一点非常重要。

1.NVIDIA显卡安装

主要参考:https://blog.csdn.net/luteresa/article/details/79555356

百试不爽的显卡安装教程,根据我自己的显卡,安装了NVIDIA-340驱动。

2.CUDA-6.5安装

下载cuda6.5版本安装包cuda_6.5.14_linux_64.run(建议所有安装包都放在home目录下,使用文本界面安装,Ctrl+Alt+F1进入,--sudo service lightdm stop关闭图形界面)。

(1)解压sudo sh cuda_6.5.14_linux_64.run --extract=extract_path (extract_path为自己的解压路径)。

解压出来有三个文件:

  • 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

安装*.run文件,sudo ./cuda_6.5.14_linux_64.run,默认安装即可,accept+y+回车搞定。

(2)添加环境变量,cuda默认安装在/usr/local/cuda-6.5中,所以

    sudo vi  /etc/profile

    a 或 i编辑,

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

    export PATH

    Esc+:wq 保存退出

    source /etc/profile 是环境变量立即生效。

添加lib库路径:

    sudo vi /etc/ld.so.conf.d/cuda.conf 

    在添加的cuda.conf文件中添加如下内容:/usr/local/cuda-6.5/lib64。保存退出

    执行 sudo ldconfig 使之立即生效。

(3)在安装sample之前,安装一些依赖库。

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

(4)安装*.sample文件

sudo ./cuda-samples-linux-6.5.14-18745345.run,同样默认安装。

之后编译sample,cd /usr/local/cuda-6.5/samples 执行sudo make

大概会编译一会,完成以后,进入 cd samples/bin/x86_64/linux/release,执行 sudo ./deviceQuery。

会出现显卡的信息,即安装成功。


大致效果如上图。显卡驱动已经安装过了,不用重复安装。

3.安装ATLAS

有MKL、OpenBLAS、ATLAS可以选择,我安装的是ATLAS:sudo apt-get install libatlas-base-dev

4.安装Opencv2.4.9

我是在官网下载的source安装的。首先下载依赖包:

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config python-numpy python3.2-dev

媒体包可选择安装:

sudo apt-get install libavcodec-dev libavformat-devlibswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev

解压压缩包:unzip opencv-2.4.9.zip

cd opencv-2.4.9

mkdir release

cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local ..

make

sudo make install

添加环境变量与lib库路径:

sudo gedit /etc/ld.so.conf

添加: /usr/local/lib

sudo ldconfig -v

sudo gedit /etc/profile

添加:export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

在home目录下编写一个hello world的程序,包含#include<opencv2/core/core.hpp>头文件

编译:g++ -L  /usr/local/cuda-6.5/lib64 `pkg-config --cflags --libs opencv` hello.cpp -o hello

编译运行成功,证明安装成功。

可能会报错:

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

下载 NCVPixelOperations.hpp 替换opencv-2.4.9/modules/gpu/src/nvidia/core中的NCVPixelOperations.hpp即可

5.安装其他依赖项

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

6.安装Caffe所需要python环境

我安装的Anaconda

sudo bash ./Anaconda2-5.1.0-Linux-x86_64.sh

默认安装之后,添加环境变量&lib路径:

sudo gedit  etc/ld.so.conf

添加:/usr/usrname/anaconda2/bin  (usrname是自己的账号名)

sudo  ldconfig

sudo gedit ~/.bashrc

添加:export LD_LIBRARY_PATH="/home/usrname/anaconda2/lib:$LD_LIBRARY_PATH"

测试:在终端输入python,没报错即成功。

7.安装Caffe的Python依赖库

cd ~/caffe-master/python/

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

注:如果提示差什么动态库,apt-get install 安装即可。

8.安装Cudnn

(1)下载cudnn-6.5-linux-x64-v2,然后安装:

解压:sudo tar -zxvf cudnn-6.5-linux-x64-v2.tgz

cd cudnn-6.5-linux-x64-v2

将头文件&动态库拷贝到对应文件夹:

sudo cp lib* /usr/local/cuda-6.5/lib64/

sudo cp cudnn.h /usr/local/cuda-6.5/include/

(2)更新软连接:

cd /usr/local/cuda-6.5/lib64/

sudo chmod +r libcudnn.so.6.5.48

sudo ln -s libcudnn.so.6.5.48 libcudnn.so.6.5

sudo ln -s libcudnn.so.6.5 libcudnn.so

9.编译Caffe

cd ~/caffe-mater

sudo cp Makefile.config.emamples Makefile.config

修改该文件中几个地方:

USE_CUDNN=1;

添加:-gencode arch=compute_50,code=compute_50     删除50之后的东西。

PYTHON_LIB=$(ANACONDA_HOME)/lib

WITH_PYTHON_LIB:=1

这里要根据自己安装的环境更改,例如Python版本有2、3可以选择,matlab安装与否等等。


编译命令:

make all

make test

make runtest


测试:python,import caffe,没报错就编译成功了。以后就可以测试一下demo,然后开始编程了。

安装caffe主要参考以下两个博客:

https://www.cnblogs.com/YiXiaoZhou/p/6396674.html

http://www.cnblogs.com/platero/p/4118139.html

安装时的疑问:

1. *-dev依赖包的下载,linux中有大量的*-devel与*-dev依赖包。*-devel开发包中主要包括一些头文件和静态链接库。*-dev或者其他*.devel软件一般都是C语言编写的一些头文件或cpp文件,往往是其他模块或这我们自己写的模块在编译时,需要依赖这些*-devel软件包。

2. 在安装cuda的时候,由于涉及到NVIDIA驱动的安装,使得nouveau驱动与NVIDIA驱动冲突,为了能够继续安装,必须禁用此驱动。


猜你喜欢

转载自blog.csdn.net/cat1992/article/details/79971697