首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu 16.04+CUDA7.5+Caffe深度学习环境搭建

Ubuntu 16.04+CUDA7.5+Caffe深度学习环境搭建

作者头像
用户8705039
修改2021-06-08 10:56:24
8990
修改2021-06-08 10:56:24
举报
文章被收录于专栏:linux百科小宇宙linux百科小宇宙

详细介绍在Ubuntu 16.04下搭建CUDA7.5+Caffe深度学习环境的过程步骤。

1.安装Ubuntu 16.04

 省略。不懂可以自行百度,系统安装后安装必要的更新和工具。

sudo apt update

sudo apt-get upgrade

sudo apt-get install vim

sudo apt-get install cmake

2.安装显卡驱动

进入all setting->Software Update,更换英伟达361.42驱动,重启电脑,使用nvidia-smi测试是否成功。

3.安装cuda

(1)安装必要的依赖库

ca-certificates-java

default-jre

default-jre-headless

fonts-dejavu-extra

freeglut3

freeglut3-dev

java-common

libatk-wrapper-java

libatk-wrapper-java-jni

libdrm-dev

libgl1-mesa-dev

libglu1-mesa-dev

libgnomevfs2-0

libgnomevfs2-common

libice-dev

libpthread-stubs0-dev

libsctp1

libsm-dev

libx11-dev

libx11-doc

libx11-xcb-dev

libxau-dev

libxcb-dri2-0-dev

libxcb-dri3-dev

libxcb-glx0-dev

libxcb-present-dev

libxcb-randr0-dev

libxcb-render0-dev

libxcb-shape0-dev

libxcb-sync-dev

libxcb-xfixes0-dev

libxcb1-dev

libxdamage-dev

libxdmcp-dev

libxext-dev

libxfixes-dev

libxi-dev

libxmu-dev

libxmu-headers

libxshmfence-dev

libxt-dev

libxxf86vm-dev

lksctp-tools

mesa-common-dev

openjdk-7-jre

openjdk-7-jre-headless

tzdata-java

x11proto-core-dev

x11proto-damage-dev

x11proto-dri2-dev

x11proto-fixes-dev

x11proto-gl-dev

x11proto-input-dev

x11proto-kb-dev

x11proto-xext-dev

x11proto-xf86vidmode-dev

xorg-sgml-doctools

xtrans-dev

libgles2-mesa-dev

nvidia-modprobe

build-essential

(2)安装cuda-toolkit

① 安装cuda_7.5.18_linux.run

sudo ./cuda_7.5.18_linux.run --override

安装过程如下:

Do you accept the previously read EULA? (accept/decline/quit): accept

You are attempting to install on an unsupported configuration. Do you wish to continue? ((y)es/(n)o) [ default is no ]: y

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 352.39? ((y)es/(n)o/(q)uit): n

Install the CUDA 7.5 Toolkit? ((y)es/(n)o/(q)uit): y

Enter Toolkit Location [ default is /usr/local/cuda-7.5 ]:

Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y

Install the CUDA 7.5 Samples? ((y)es/(n)o/(q)uit): y

Enter CUDA Samples Location [ default is /home/kinghorn ]: /usr/local/cuda-7.5

Installing the CUDA Toolkit in /usr/local/cuda-7.5 ...

Finished copying samples.

===========

= Summary =

===========

Driver: Not Selected

Toolkit: Installed in /usr/local/cuda-7.5

Samples: Installed in /usr/local/cuda-7.5

② 设置环境变量

vi /home/xxx/.bashrc

添加如下内容:

export PATH=/usr/local/cuda/bin:$PATH

执行如下命令使环境变量生效

source /home/xxx/.bashrc

将cuda动态库添加到动态库管理器

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

添加:

/usr/local/cuda/lib64

执行ldconfig使新加的库生效

sudo ldconfig

③ 强制使用gcc5

编辑/usr/local/cuda/include/host_config.h文件,注释掉115行

#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

改为:

//#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

(3)编译cuda例子与测试

进入到/usr/local/cuda/NVIDIA_CUDA-7.5_Samples/1_Utilities/deviceQuery目录执行:

sudo make

./deviceQuery

4.安装cudnn库

(1)解压

tar xzvf cudnn-xxx-ga.tgz

得到cuda文件夹里面含有的lib64和include两个文件夹

(2)拷贝到cuda安装目录

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

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

注意:拷贝后将链接删除重新建立链接,否则,拷贝是多个多个不同名字的相同文件,链接关系参见cudnn解压后的文件夹。也可以分别拷贝每一个文��,链接文件拷贝使用cp -d命令。

5.安装opencv3.1.0

(1)安装基本必要库

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

(2)配置opencv,生成Makefile

cd opencv-3.1.0

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

在configure过程中过程中,可能会出现下面的错误:

– ICV: Downloading ippicv_linux_20151201.tgz…

在直接下载该文件的过程中,会因为超时而失败,需要收到下载,将其拷贝至opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b目录内,重新执行配置命令。

(3)编译opencv

make -j8

此时可能会出现另一个错误:

/usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’: /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope return (char *) memcpy (__dest, __src, __n) + __n;

这是因为ubuntu的g++版本过高造成的,只需要在opencv-3.1.0目录下的CMakeList.txt 文件的开头加入:

set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -D_FORCE_INLINES”)

添加之后再次进行编译链接即可。

(4)查看版本号

pkg-config --modversion opencv 

(5)安装

sudo make install

6.安装caffe与配置

(1)安装必要的依赖库

sudo apt-get install build-essential

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compile

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libatlas-base-dev

sudo apt-get install Python-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

如果这些库都能顺利安装,会大大减少后面遇到的问题。

(2)下载caffe-master并解压得到源码包

解压:

unzip caffe-master.zip 

(3)修改配置文件Make.config

cd caffe-maste

cp Makefile.config.example Makefile.config

vi Makefile.config

将# USE_CUDNN := 1前得#注释去掉,表示使用cuDNN,如果不是使用GPU,可以将# CPU_ONLY := 1前得注释去掉。这里我使用cuDNN来加速。

(4)编译caffe

方法1:使用cmake编译

mkdir build

cd build

cmake ..

make all -j8

这种方法一般不会出现问题。

方法2:直接使用gcc编译

make -j8

错误1:

src/caffe/net.cpp:8:18: fatal error: hdf5.h: No such file or directory

参考方法

cd /usr/lib/x86_64-linux-gnu

sudo ln -s libhdf5_serial.so.10.1.0 libhdf5_serial.so

sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_serial_hl.so

修改Makefile.config

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/hdf5/serial

错误2:

error -- unsupported GNU version! gcc versions later than 5.3 are not supported!

目前caffe不支持高于5.3的gcc,理论上可通过对gcc,g++降级解决,但是降级后还会引起其他兼容性问题,因此并不能解决实际问题,下面附上降级方法。解决方法在后面。

① 安装低版本gcc、g++

sudo apt-get install gcc-4.7 gcc-4.7-multilib

sudo apt-get install g++-4.7 g++-4.7-multilib

② 设置优先级

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 40

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50

③ 选择版本

sudo update-alternatives --config gcc

There are 2 choices for the alternative gcc (providing /usr/bin/gcc)

Selection Path Priority Status

------------------------------------------------------------

0 /usr/bin/gcc-5 50 auto mode

* 1 /usr/bin/gcc-4.7 40 manual mode

2 /usr/bin/gcc-5 50 manual mode

 

sudo update-alternatives --config g++

There are 2 choices for the alternative g++ (providing /usr/bin/g++).

Selection Path Priority Status

------------------------------------------------------------

0 /usr/bin/g++-5 50 auto mode

* 1 /usr/bin/g++-4.7 40 manual mode

2 /usr/bin/g++-5 50 manual mode

错误3:

/usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’: /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope return (char *) memcpy (__dest, __src, __n) + __n;

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

改为:

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

错误3:

/usr/bin/ld: cannot find -lippicv

cp opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64/libippicv.a /usr/local/lib

再次编译即可。

至此,gcc、g++降级完成。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档