Ubuntu16.04 安装配置GPU版本Caffe

6 篇文章 0 订阅
5 篇文章 0 订阅

配置:i7-6700HQ + GTX 965M

系统:ubuntu16.04 64位

安装CUDA 8.0


在存放.deb文件的目录下执行:
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb 
sudo apt-get update
sudo apt-get install cuda
安装完成后重启

添加环境变量,在~/.bashrc中添加:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
使环境变量立即生效,执行 source ~/.bashrc

安装cuDNN

Nvidia官网下载cuDNN
• https://developer.nvidia.com/rdp/cudnn-download
• 注册后选择:
• Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0
• cuDNN v5.1 Library for Linux

安装cuDNN
解压cuDNN安装包
在解压出的cuda目录下执行:
• sudo cp lib64/* /usr/local/cuda/lib64/
• sudo cp include/cudnn.h /usr/local/cuda/include/

更新软链接,在/usr/local/cuda/lib64/目录下执行:
sudo chmod +r libcudnn.so.5.1.10
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig

安装CUDA Sample

 在/usr/local/cuda/samples/目录下编译例程:
• sudo make all
测试CUDA例程deviceQuery
• 在/usr/local/cuda/samples/bin/x86_64/linux/release目录下执行:
./deviceQuery

• 若能打印出显卡相关信息,则CUDA安装成功,如下图所示:


安装caffe必要的依赖库
sudo apt-get install libprotobuf-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libopencv-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install --no-install-recommends
sudo apt-get install libboost-all-dev
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev

安装完成后最好再

sudo apt-get update

sudo apt-get upgrade

安装opencv
到官网http://opencv.org/downloads.html下载压缩包,在/home目录本地解压
进入OpenCV2.4.13所在的文件夹
cd /home/css/opencv-2.4.13
安装依赖库和cmake 
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev  libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev  
sudo apt-get install cmake 
安装完cmake之后执行命令 
cmake .
看清楚cmake后面有一个"."符号!!!且cmake和"."之间有一个空格 
执行完上述命令后执行
sudo make
之后就是漫长的编译过程,编译时间的长短和电脑配置有关系


执行完毕后执行命令
sudo make install


执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境


首先将OpenCV的库添加到路径,从而可以让系统找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf  
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:
/usr/local/lib  


然后保存退出,执行如下命令使得刚才的配置路径生效

sudo ldconfig


配置bash,执行如下命令 
sudo gedit /etc/bash.bashrc  
在末尾添加 
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
      
export PKG_CONFIG_PATH  
如图所示:


保存退出,然后执行如下命令使得配置生效
sudo source /etc/bash.bashrc  
之后更新database 
sudo updatedb  
至此,Linux\Ubuntu16.04环境下配置OpenCV已经全部完成,下面用一个简单的程序进行测试 
在home目录创建opencv.cpp:
    #include <iostream>  
    #include <opencv2/opencv.hpp>  
      
    using namespace std;  
    using namespace cv;  
      
    int main()  
    {  
        Mat srcImage = imread("mayuyu.jpg");  
        imshow("srcIMage",srcImage);  
      
        waitKey(0);  
      
        return 0;  
    }  
并在相同目录下存放一张mayuyu.jpg
编译OpenCV程序命令为: 
g++ `pkg-config opencv --cflags` opencv.cpp  -o opencv `pkg-config opencv --libs`   
编译没有错误运行 
./opencv  

结果应该可以读取mayuyu.jpg并显示该图片


添加CUDA库
• 在/etc/ld.so.conf.d/目录下新建caffe.conf文件
sudo gedit /etc/ld.so.conf.d/caffe.conf
• 在caffe.conf文件(可能是空的)中添加内容:
/usr/local/cuda/lib64


安装Caffe
下载Caffe安装包,执行:
• sudo git clone https://github.com/BVLC/caffe.git


编译Caffe
进入caffe目录下
• 创建编译指导文件,执行
sudo cp Makefile.config.example Makefile.config
• 修改Makefile.config文件,根据运行平台修改配置
(可能要赋予修改权限:sudo chmod 666 Makefile.config)
• 若使用CPU+Caffe,则将第8行CPU_ONLY := 1前的#删除
• 若使用GPU+cuDNN+Caffe,则将第5行USE_CUDNN := 1前#删除
• 依次执行
sudo make all
sudo make test
sudo make runtest
(必要时可以在每条后面加 -j4,使用四线程加快编译速度,如sudo make all -j4)
• 上述过程若都没有报错,则实验完成
如下图所示:(不使用cudnn)



使用cudnn:(多test了几项)


BUG汇总
1.编译caffe,make all时:
“fatal error: hdf5.h: 没有那个文件或目录”解决方法
Step 1
在Makefile.config文件的第94行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
改为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
Step 2
在Makefile文件的第181行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial


2.编译caffe,执行make runtest时:
caffe make runtest error(core dumped)Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) 


简单讲就是GPU的加速性能不够,CUDNN只支持CUDA Capability 3.0以上的GPU加速


3.编译cuda samples时
collect2: error: ld returned 1 exit status
Makefile:381: recipe for target 'cudaDecodeGL' failed
make[1]: *** [cudaDecodeGL] Error 1
make[1]: Leaving directory '/usr/local/cuda-8.0/samples/3_Imaging/cudaDecodeGL'
Makefile:52: recipe for target '3_Imaging/cudaDecodeGL/Makefile.ph_build' failed
make: *** [3_Imaging/cudaDecodeGL/Makefile.ph_build] Error 2

解决方法:暂时找不到,可能是版本问题,但是不影响我们运行测试程序deviceQuery


4.libEGL.so.1 不是符号连接

/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link

/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link

解决方法:

sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

参考 http://stackoverflow.com/questions/43016255/libegl-so-1-is-not-a-symbolic-link



  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值