Ubuntu16.04 + Caffe + CUDA + cudnn 的配置详细教程&& Ubuntu18.04 可用

Ubuntu18.04配置Caffe环境(cudn9.0 + cudnn7 GPU版)&&Ubuntu16.04可用

主要感谢此人的博客博客


配置过很多笔记本电脑,TAITAN XP 也配置过,也碰到过很多坑,但最后大同小异。
参考:博客




下载相关依赖


sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


安装NVIDIA驱动


有两种方式下载:一种是在线安装,另一种是离线安装。当然推荐第一种,第二种安装可能会出现问题,如果是ubuntu18.04系统,那么安装驱动比较简单

ubuntu18.04


  • 打开软件及其更新(Software & Updates)
  • 选择附加驱动(Additional Drivers)
  • 选择using NVIDIA driver metapackage from nvidia-driver选项
  • 重启系统


ubuntu16.04及其一下系统


方式一:

卸载驱动

sudo apt-get remove --purge nvidia*

添加PPA源到系统

sudo add-apt-repository ppa:graphics-drivers/ppa

更新系统

sudo apt-get update 

进入命令行界面(Ctrl + Alt + F1),然后输入

sudo service lightdm stop

运行安装命令,(执行下面命令时,首先进入官网查看GPU对应的英伟达驱动的版本,然后更换下面nvidia-*,后面数字进行安装.)

sudo apt-get install nvidia-384

最后重启,命令行输入

nvidia-smi

显示输出说明安装成功.


第二种方式(不推荐)

可能会出现循环登录问题



NVIDIA下载:官方下载地址,并且找到自己的驱动下载。

  • 安装驱动
  1. 终端输入
sudo gedit /etc/modprobe.d/blacklist.conf  

在最后一行添加如下代码,表示讲自带驱动加入黑名单

blacklist nouveau

在shell输入下列代码,然后重启电脑

sudo update-initramfs -u

重启电脑有时会出现屏幕分辨率问题,其中的解决方案->解决方案

重启电脑后,进入命令行界面 (Ctrl+Alt+F7 表示进入图形化界面)

Ctrl+Alt+F1  #进入命令行界面

然后shell中输入用户名以及密码后输入

sudo service lightdm stop

然后进入下载的驱动所在的文件夹,并且运行X,X为你下载的驱动

sudo sh X

重启,并且输入,会显示信息说明正确安装

nvidia-smi


##安装CUDA

首先下载CUDA9.0官方下载地址,下载完成后进入文件下载的地址
然后赋予权限

sudo chmod 777 X # X为你下载的文件名,".run"后缀

在运行以下代码前,一定要先知道当选择选项 Install NVIDIA Accelerated Graphics Driver for nvidia*时候选择取消,其他选项选择yes,或则回车,并且查看协议时候有快捷键CART + D 进行翻页,其中X是你下载的CUDA9的文件名

sudo sh X  # 如果需要安装下载文件中自带的驱动,使用sudo,否则可以使用普通用户


##配置环境变量

进入环境变量

sudo gedit ~/.bashrc 

添加,下面内容到文件末尾,保存并关闭。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  • 测试cuda,最后输出有PASS,即为正确安装。
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

##安装cudnn
下载地址:官方下载地址
cuda9.0对应cudnn7,下载cudnn7即可

下载完成后直接解压,然后进入其include目录

cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include  #复制头文件

进入lib目录,注意 -rf 参数一定不要沈略,并且再进入lib64之前,先看一下其中文件有哪些,并且操作目录一定要找出对应的操作目录,libcudnn.so后面的数字一定要做出相应的更改。下面这一步一定要看懂了逻辑之后操作。

cd cuda/lib64
sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7     
sudo ln -s libcudnn.so.7.0.3 libcudnn.so.7  
sudo ln -s libcudnn.so.7 libcudnn.so      

然后使用命令,可以看到输出相应的信息

nvcc -V

## 安装并测试Caffe(Ubuntu16.04安装方式)
首先下载caffe 官方下载地址

-然后将 caffe主目录下的 Makefile.config.example,更名为Makefile.config

cp Makefile.config.example Makefile.config

将其中的

#USE_CUDNN := 1
# USE_LEVELDB := 0
# USE_LMDB := 0
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
# For CUDA < 6.0, comment the lines after *_35 for compatibility
CUDA_ARCH := -gencode arch=compute_21,code=sm_21 \
             -gencode arch=compute_30,code=sm_30
             -gencode arch=compute_35,code=sm_35 \
             -gencode arch=compute_50,code=sm_50 \
             -gencode arch=compute_52,code=sm_52 \
             -gencode arch=compute_61,code=sm_61

分别更改成:

USE_CUDNN := 1
USE_LEVELDB := 1
USE_LMDB := 0
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial       
CUDA_ARCH := -gencode arch=compute_35,code=sm_35 \
             -gencode arch=compute_50,code=sm_50 \
             -gencode arch=compute_52,code=sm_52 \
             -gencode arch=compute_61,code=sm_61

  • 更改makefile文件:

将其中的

NVCCFLAGS += -ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

更改成:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
  • 编译caffe并且测试
    使用make命令编辑测试,参数 -j6 代表 cpu 6 个核心并行计算,可根据实际更改,更重要的是得使用sudo 命令。

执行下列代码之前,最好先看看紧接这一步骤后的下一步骤的错误处理的解决方案后再执行此步骤,因为本人裸机配,然后出现了错误并且解决了。换句话说,可以先执行解决错误的方案,也就是下一步骤,然后执行此步骤,相对顺序不重要,

make clean -j8
make all -j8 
make test -j8
make runtest -j8

最后执行了runtest 后输出 PASS 说明测试成功。

不过大多数情况会出现 “libcudnn.so.7 cannot open shared object file: No such file or directory”,则执行下面代码,根据不同版本适当进行修改。此步骤一定要弄懂了对应数字的区别后再进行修改。


sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7 && sudo ldconfig


##安装Caffe (Ubuntu17.10)##

命令行直接执行,安装Caffe Gpu版本直接安装成功

sudo apt install caffe-cuda



最后完成了配置,然后可以使用caffe自带的例子跑,比如 mnist 。不过只要 runtest 跑通了过后后面的就没问题了,

再多说一下错误处理的


想要调用电脑GPU时,一定要使用sudo命令,如果出现以下ERROR,说明可能和 GPU权限有关,可以试用一下 sudo

4 vs 0

如果出现一下ERROR,那就好办了,说明内存不够,重启一下或者更改 protxt 中的 batch_size 更改为 1 试一下,若跑通了,说明内存太小,然后慢慢增加 batch_size的值,达到电脑的上限停止

2 vs 0

你可能感兴趣的:(caffe)