半小时搭建 Ubuntu16.04 + CUDA8.0 + CUDNN5.0 + Caffe 环境
一、准备工作
Ubuntu系统盘的制作请参照:
CUDA 8.0 + CUDNN 离线包的下载:参照官网 || 百度云
二、安装工作
2.1. 将CUDA离线包放在根目录下,执行以下代码:
$ sudo dpkg -i cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
2.2. 设置环境变量:
打开文件.profile(只对当前用户生效):
$sudo gedit ~/.profile
在文件的末尾添加如下几行:
export CUDA_HOME=/usr/local/cuda-8.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
PATH=${CUDA_HOME}/bin:${PATH}
export PATH
保存文件之后在命令行执行一下,让配置内容生效
$source ~/.profile
2.3. 重启电脑,重启电脑,重启电脑(重要说三遍),否则有可能编译不过官方例程
2.4. 查看CUDA安装情况
编译官方自带Samples
$cd /usr/local/cuda/samples/
$sudo make
例子编译好之后,在samples下面的子文件bin/x86_64/Linux/release中,运行编译好的可执行程序
$cd bin/x86_64/linux/release
$./deviceQuery
如果一切正常,那么该程序会打印出本机cuda device的一些信息,如下:
至此CUDA8.0 安装结束
三、caffe的安装及编译
3.1 换源,推荐切换到sohu的源
3.2 一些必要的库的安装
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libboost-all-dev libhdf5-serial-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags ipython
sudo apt-get install -y protobuf-c-compiler protobuf-compiler
3.3 安装BLAS(可选择ATLAS,MKL或OpenBLAS)这里使用ATLAS:方便啊!一个命令行就搞定
sudo apt-get install libatlas-base-dev
3.4 安装opencv2(caffe的使用上很少涉及3.0的东西,如有需要安装3.0请参照)
sudo apt-get install libopencv-dev
sudo apt-get install python-opencv
3.5 安装CUDNN
tar zxvf cudnn-xxxxxx.tgz
cd cuda
sudo cp include/cudnn.h /usr/local/include
sudo cp lib64/libcudnn.* /usr/local/lib
sudo ln -sf /usr/local/lib/libcudnn.so.5.1.3 /usr/local/lib/libcudnn.so.5
sudo ln -sf /usr/local/lib/libcudnn.so.5 /usr/local/lib/libcudnn.so
sudo ldconfig -v
3.6 以上所有动态库基本安装完毕,接下来开始编译caffe
cd $CAFFE_ROOT
cp Makefile.config.example Makefile.config
打开 USE_CUDNN 前和WITH_PYTHON_LAYER 前的注释
make all -j64 && make py
至此caffe 安装结束
ERRO: hdf5.h: 没有那个文件或目录”解决方法
在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
在Makefile文件的第173行,把 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