Ubuntu16.04 安装配置GPU版本Caffe

    xiaoxiao2021-03-25  86

    配置: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

    转载请注明原文地址: https://ju.6miu.com/read-23031.html

    最新回复(0)