linux 16.04 + cuda-10.1 + cudnn-7.6.5 + caffe 精细版

linux16.04 + NVIDIA 1080ti + cuda-10.1 + cudnn-7.6.5 + Opencv-3.4 + caffe (GPU) 精简版

说在前面:

本文的图片只做解释用,如果大家能明白代码和文字的意思,或者觉得图片的存在过于冗余和混淆视听,可以不用看图片

本文内容

1.安装nvidia 驱动
2.安装cuda
3.安装cudnn
4.安装opencv
5.安装caffe

第一步可以上网找相关的教材,关于后四步全都是坑,大家一定要非常注意

这些坑主要如下:

坑(一):版本,不同的nvidia驱动对应不同的cuda 版本和cudnn版本,后面会详细说

坑(二):安装路径,大家一定要将这些的下载安装尽量包放在**根目录**底下,否则后面添加环境变量和路径的时候会巨TMD麻烦

坑(三):注意不要重复下载或者下载不同版本的文件,比如说:如果你刚开始不知道应该用哪一个版本的cuda, 你盲目的下了cuda-9.0 但是后来你发现cuda-10.1是对的,那么请你一定要进入你的 /usr/local 目录 找到 cuda-9.0文件夹然后把他删除掉,然后将cuda-10.1的文件夹名称改成 cuda, 也就是说你的 usr/local 目录下最好只有一个cuda文件夹,因为后期添加环境变量的时候如果同时存在几个cuda,当然如果你是大神当我没说,但是如果你跟我现在一样是个菜鸡,那就慎重一些

坑(四):安装依赖包的时候记得要刷新 sudo apt-get update 和 sudo apt-get upgrade 来刷新依赖包,虽然即使这样只能解决大部分依赖安装问题,还是一部分问题没有办法彻底解决

坑(五):不要用anaconda创建的虚拟环境的 python 进行操作,过程中也不要激活anaconda 的任何环境,如果你需要caffe使用的python 版本不是你现在 电脑自带的python 版本那么请你本地先安装一个python,千万不要用anaconda 创建的python ,那样会有很多问题,如何安装python和如何解决本地python 的冲突问题请大家自行百度

坑(六):修改/.bashrc的时候,如果稍有不慎修改错误,然后又不明就里地使用了 source ~/.bashrc 可能会导致所有的命令包括ls,mv 都用不了,但是不要害怕,网上有解决办法,一行代码就可以解决  export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

-----------------------------------------正 文 分 割 线------------------------------------

1.cuda安装

nvidia-smi

可以查看显卡状态,驱动是nvidia 430.14
在这里插入图片描述
所以 cuda对应的版本应该是10.1或者10.2 这里给出对应的表格:
在这里插入图片描述

我配置的时候选择的是nvidia driver 430 / cuda 10.1 / cudnn 7.6.5

第一步:下载cuda

https://developer.nvidia.com/cuda-downloads
在这里插入图片描述
Tips :如果直接按照wget的命令下载会很慢,建议如下图操作:
在这里插入图片描述
复制图中蓝色选中的部分直接输入到:
在这里插入图片描述
搜索框中就可以自行下载,建议下载过程中使用手机热点,亲测比较快
接下来:

sudo chmod 777 cuda_10.1.243_418.87.00_linux.run
sudo ./cuda_10.1.243_418.87.00_linux.run

此时会跳出一个下载的弹框选项

注意
如果前面已经安装了nvidia 驱动,在第一个界面的最下面时候先accept ,之后会跳到第二个界面,在第二个界面中 将安装驱动的那个选项取消,取消的方式也很简单,在驱动那个选择项上按空格就可以。

第二步:更改文件夹名称+环境变量配置

/usr/local 下的 cuda文件夹名字要改正确,避免后面的麻烦
在这里插入图片描述
你可以cd /usr/local 然后 ls 查看你的cuda是不是叫作cuda-10.1、cuda-9.0或是什么cuda-master 如果是的话,你就要使用命令 mv cuda-10.1 cuda 将文件夹名称改成 cuda,相信我这对后面的环境配置将大有裨益。

接下来进行环境变量配置:

sudo vim ~/.bashrc         #打开环境变量的文件

将下面内容写入bashrc文件的最后面:

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}    #一定要注意这里!!前面说过要将解压的cuda-10.1文件夹改名成cuda

export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} #这里和上面需要注意的事情一样

然后使环境变量生效:

source ~/.bashrc

第三步:测试cuda是否安装成功

cd /usr/local/cuda/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery

在这里插入图片描述
显示此信息证明cuda安装成功

2.安装cudnn

【第一步:下载并安装cudnn】

首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:
在这里插入图片描述
下载完之后进行解压:
下载的文件名字叫 cudnn-10.1-linux-x64-v7.6.5.32.solitairetheme8

sudo tar -zxvf ./cudnn-10.1-linux-x64-v7.6.5.32.tgz

虽然扩展名不一样,但是我用同样的tgz进行解压也是可以的,忽略这点;
下面比较重要,一定要弄清楚路径!!!因为这与cuda有很大关系:

【第二步:复制头文件和动态链接库】

你现在应该有两个cuda的包,他们来自于不同的地方,
(1)是你下解压cudnn的时候来的cuda包
(2)是**/usr/local 下面的cuda的包,也就是我们上面强调要重命名**的那个!!

在这里插入图片描述
!!这个是你cudnn解压出来的 cuda 包里面是这样的,只有三个东西

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

而这里出现的 /usr/local/cuda/include 则是另外一个,也就是前面强调需要重命名 的那个cuda 底下的include路径:
在这里插入图片描述
是这个东西,下面有巨多的包包。关于这两个包,一定要弄清楚!!

cd ..    #回到cuda目录
cd lib64 
sudo cp lib* /usr/local/cuda/lib64/   #复制动态链接库

也就是下图的这个包 lib64 里面的东西;而后面的 /usr/local/cuda/lib64 想必不用再赘述
在这里插入图片描述
在这里插入图片描述
【第三步:删除相关文件和建立软连接】

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7   #删除原有动态文件
sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7  #生成软衔接(注意这里要和自己下载的cudnn版本对应,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本)
sudo ln -s libcudnn.so.7 libcudnn.so   #生成软链接

Tips: 对于文件的版本,大家可以进入文件夹仔细观察,不要删错了,要与自己的版本对应,如果大家有经验的话,可以用tab键来补全,防止错删文件
最后:

sudo ldconfig /usr/local/cuda/lib64

注意:这个步骤不能缺少;如果你完成这一步,cudnn安装就完成了

【第四步:测试cudnn安装成功】

复制以下代码:

cp -r /usr/src/cudnn_samples_v7/ $HOME
cd  $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN

在这里插入图片描述
如果结果如图类似,那么通过测试,cudnn配置完成

3.安装opencv3.4

【第一步:下载相关依赖】

这里建议大家下载依赖之前先输入两个命令:

sudo apt-get update
sudo apt-get upgrade

更新一下安装包,避免安装的时候有些包太老了或者是不存在的问题

然后开始安装依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install --assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev

【第二步:下载/解压Opencv-3.4】

首先路径,还是建议将路径直接下到 根目录 下面,这样比较方便;

wget https://github.com/opencv/opencv/archive/3.4.0.zip

或者大家直接复制后面http的部分,用热点下载也可以,反正自己想办法
解压:

unzip 3.4.0.zip  

从源码构建opencv

复制下面命令一条条执行即可

cd opencv-3.4.0  
mkdir build  
cd build  
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..  
make  
make install  

【第三步:测试是否安装成功】

mkdir ~/opencv-test  
cd ~/opencv-test  
gedit DisplayImage.cpp

编辑如下代码:

#include <stdio.h>  
#include <opencv2/opencv.hpp>  
using namespace cv;  
int main(int argc, char** argv )  
{  
    if ( argc != 2 )  
    {  
        printf("usage: DisplayImage.out <Image_Path>\n");  
        return -1;  
    }  
    Mat image;  
    image = imread( argv[1], 1 );  
    if ( !image.data )  
    {  
        printf("No image data \n");  
        return -1;  
    }  
    namedWindow("Display Image", WINDOW_AUTOSIZE );  
    imshow("Display Image", image);  
    waitKey(0);  
    return 0;  
}

创建CMake编译文件:

sudo vim CMakeLists.txt

写入如下内容:

cmake_minimum_required(VERSION 2.8)  
project( DisplayImage )  
find_package( OpenCV REQUIRED )  
add_executable( DisplayImage DisplayImage.cpp )  
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

编译:

cd ~/opencv-test  
cmake .  
make 

执行: *此时opencv-test文件夹中已经产生了可执行文件DisplayImage,随便从网上下载一张图片放在opencv-test文件夹下,假设你给它命名cv.jpg
然后运行:

./DisplayImage cv.jpg

结果是显示我下载的这张图像。
如果想用python调用opencv,安装python-opencv:

sudo apt-get install python-opencv  
sudo apt-get install python-numpy

4.配置caffe环境

【第一步:更新和安装依赖包】

sudo apt-get update
sudo apt-get upgrade
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

【第二步:下载并安装caffe】

这里下载caffe 还是要下在 根目录 下面:

wget https://github.com/BVLC/caffe

下载完成后,会在 根目录 的下载里找到caffe-master.zip,用unzip

unzip caffe-master.zip

命令解压到家目录下,然后重命名为caffe

【第三步:配置caffe相关变量】

复制 Makefileconfig

cd caffe
sudo cp Makefile.config.example Makefile.config

打开并修改配置文件

sudo vim Makefile.config      #打开Makefile.config文件 

根据个人情况修改文件:本文讲的是caffe-gpu的配置方式


若使用cudnn,则将:

#USE_CUDNN := 1

改成:

USE_CUDNN := 1

若使用opencv3 版本的:

#OPENCV_VERSION := 3 

改成:

OPENCV_VERSION := 3

若要使用python来编写layer,则:

#WITH_PYTHON_LAYER := 1 

改成:

WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

改成:

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的前两项,修改后为:
在这里插入图片描述


修改Makefile文件

sudo vim Makefile

修改如下:

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

改成:

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

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

【第四步:编译】
:j6 或者是 j8 取决于你电脑是几核的,按照自己的配置设置

sudo make clean
make all –j6
make test –j6
make runtest –j6

在这里插入图片描述
出现此图则证明成功

【第五步:安装pycaffe】
在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。
在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。
首先回到caffe的根目录,然后执行安装代码:

cd ~/caffe
sudo apt-get install gfortran
cd ./python
for req in $(cat requirements.txt); do pip install $req; done

安装完成以后,再次回到caffe根目录我们可以执行:

cd ..                     # 回到caffe 根目录
sudo pip install -r python/requirements.txt

就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。
编译python接口:

make pycaffe  -j6

配置环境变量,以便python调用:

sudo vim ~/.bashrc

export PYTHONPATH=~/caffe/python:$PYTHONPATH

添加到文件中最后一行
注意:!!!这里caffe要在根目录下,否则会有错误
最后:

source ~/.bashrc

就可以完成了。

第六步:验证安装完成

cd caffe/python
python 
import caffe 

如果成功那么证明你的caffe和pycaffe 没有安装错误

cd          #退回根目录
python   #进入python
import caffe  

如果这样报错没有caffe模块,说明你的caffe 的环境变量没有成功,可以查阅相关有关caffe的文章

可能遇到的问题的链接

问题:usr/bin/ld: cannot find -lxxx
https://www.cnblogs.com/hit-joseph/p/10131183.html

错误:caffe 找不到lhdf5_hl和lhdf5的错误:
https://www.baidu.com/link?url=rXTvxpideq2pzr-iB1ltwZ8rSFL6YxRa9tl-ZBiEX8pAj_1NFMukHIz7wUlGKTaRWKIe11uwDYIK0Q7pZqmQB8sCS5cu15_eMFH0Fbc25Se&wd=&eqid=a5f0300a0016c921000000035dd0c6ec

错误:recipe for target ‘.build_release/lib/libcaffe.so.1.0.0’ failed
https://blog.csdn.net/qq_33144323/article/details/81741671

错误:recipe commences before first target. Stop
(makefile文件中修改的时候空格和tab键搞混了或者是多空格,少空格的问题)
https://blog.csdn.net/freege9/article/details/77987536

错误:nvcc fatal : Unsupported gpu architecture ‘compute_20’
https://blog.csdn.net/weixin_37983220/article/details/85341058

linux 重命名文件和删除文件夹
https://mp.csdn.net/postedit/103107527

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值