Intel caffe 安装及用gpu训练即去掉CPU-Only的方法

来源:互联网 发布:传奇盗号软件 编辑:程序博客网 时间:2024/06/06 13:21

能找到这里估计你也是快被气吐血了

intel caffe针对cpu进行了优化,可以达到与gpu相同的性能(据说

然而intel caffe编译过程中,若是把CPU_ONLY=1一行注释掉(即使用cpu)
会出现无数莫名其妙的bug,
诸如

 fatal error: caffe/proto/caffe.pb.h: No such file or directory 

./include/caffe/data_transformer.hpp(82): error: identifier "nullptr" is undefined1 error detected in the compilation of "/tmp/tmpxft_00001dde_00000000-13_hdf5_data_layer.compute_50.cpp1.ii".Makefile:763: recipe for target '.build_release/cuda/src/caffe/layers/hdf5_data_layer.o' failedmake: *** [.build_release/cuda/src/caffe/layers/hdf5_data_layer.o] Error 1make: *** Waiting for unfinished jobs...../include/caffe/data_transformer.hpp(82): error: identifier "nullptr" is undefined

还有找不到lhdf5_hl和lhdf5的错误 ,
以上三种似乎是intel caffe特有的bug,网上用这个的人寥寥无几,根本搜不到解决办法,故在这里给出完整的安装流程。

除此之外还有很多库找不到,之类的错误,不一一列举了,网上几乎都有解决办法

第一步:配置环境

我的电脑环境:
opencv2.4.10(强烈建议不要装opencv3,会死,虽然它写着支持opencv3但事实就是你有很大几率会崩
ubuntu16.04
cuda8.0
cudnn
python2.7
intel mkl2017(官网有教程,安装起来不是太麻烦
以上几个的安装流程应该很容易找,就不放出了,不过要注意环境变量一定要设置正确,不然会在编译时报错。

强烈建议将caffe安装在/home/你的计算机名称/ 目录下
比如我的是/home/mottled/caffe

第二步:输入以下命令获取一些必要的依赖库

sudo apt-get update &&sudo apt-get -y install build-essential git cmake &&sudo apt-get -y install libprotobuf-dev libleveldb-dev libsnappy-dev &&sudo apt-get -y install libopencv-dev libhdf5-serial-dev protobuf-compiler &&sudo apt-get -y install --no-install-recommends libboost-all-dev &&sudo apt-get -y install libgflags-dev libgoogle-glog-dev liblmdb-dev &&sudo apt-get -y install libatlas-base-dev

第三步:下载intel caffe源码(#后面为注释

输入以下命令:

#进入根目录cd ~#git clone下载源码git clone https://github.com/intel/caffe.git#等待下载完毕

第四步:设定环境变量

输入以下命令:

echo 'source /opt/intel/bin/compilervars.sh intel64' >> ~/.bashrcsource ~/.bashrc#这一步中\home\你的计算机名称\caffe可以替换为你的caffe安装位置,要绝对路径echo "export CAFFE_ROOT=\home\你的计算机名称\caffe" >> ~/.bashrcsource ~/.bashrc#同上一步\home\你的计算机名称\caffe可以替换为你的caffe安装位置echo "export PYTHONPATH=\home\你的计算机名称\caffe\python" >> ~/.bashrcsource ~/.bashrc

第五步:修改Makefile和Makefile.config文件

进入caffe文件夹中,将Makefile.config.example 复制一份,命名为Makefile.config
Makefile.config.example 作为备份,万一出了问题再换回来(实际上出了问题重新安装比较快)
Makefile.config文件中包含着一些编译时的设置,编译之后想要修改这些设置需要重新编译(make clean)才能生效。
打开Makefile.config文件,
搜索CPU_ONLY := 1,将该行注释掉,即

#CPU_ONLY := 1

上面两行有

# USE_CUDNN := 1# 去掉注释,即改为USE_CUDNN :=1

搜索BLAS := mkl,将下面的

# BLAS_INCLUDE := /path/to/your/blas# BLAS_LIB := /path/to/your/blas

两行改为

BLAS_DIR := $(MKLROOT)/includeBLAS_LIB := $(MKLROOT)/lib/intel64

如果系统是16.04,需要进行以下步骤(14可以跳过)
搜索INCLUDE_DIRS,将该行改为

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

保存退出。

打开shell,输入命令

cd /usr/lib/x86_64-linux-gnusudo ln -s libhdf5_serial.so.10.1.0 libhdf5.sosudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so 

这一步是给caffe指明几个库的位置

之后最关键的一步
打开Makefile文件
搜索$(DYNAMIC_VERSION_REVISION),在这一段

$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)DYNAMIC_NAME := $(LIB_BUILD_DIR)/$(DYNAMIC_VERSIONED_NAME_SHORT)COMMON_FLAGS += -DCAFFE_VERSION=$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)$(DYNAMIC_VERSION_REVISION)

之后添加一句

COMMON_FLAGS += -std=c++11

保存退出。

打开shell,进入caffe目录下
输入以下命令

make -j8

j8代表八核一起编译,若是出错尝试

# 清除错误编译内容make cleanmake

编译完成后,可以执行以下命令

make testmake runtest

进行检验安装是否正确
不过使用gpu后,runtest有时候会卡住,原因不明
恢复cpuonly只需要在makefile.config中将cpu_only:=1取消注释,同时注释掉use_cudnn:=1。

原创粉丝点击