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。
- Intel caffe 安装及用gpu训练即去掉CPU-Only的方法
- windows+VS2013+CPU(only)安装caffe及训练lenet
- caffe 的cpu only安装
- Ubuntu 14.04上Caffe安装:CPU-Only与GPU支持
- 用caffe在notebook(gpu/cpu性能有限)上训练数据出现的错误
- caffe安装心得cpu(only)
- caffe在ubuntu16.04安装遇到的问题及解决方法(CPU ONLY)
- Ubuntu 16.04下CPU only模式的caffe安装
- 虚拟机环境下Ubuntu系统的Caffe安装 CPU-ONLY
- Ubuntu 14.04安装caffe only CPU
- Ubuntu 16.04上安装Caffe(CPU only)
- Ubuntu安装caffe指南(cpu only)
- Ubuntu16.04安装Caffe(CPU Only)
- Ubuntu下安装Caffe(CPU Only)
- Ubuntu1404下Caffe(Only CPU)安装
- 从零开始安装 Caffe --CPU only----没有 pycaffe
- Mac下安装Caffe—CPU ONLY
- Ubuntu16.04中caffe安装(only cpu)
- c++的多态
- 怎样用linux命令知道系统是ubuntu还是redhat或者其它的系统?
- UESTC
- SQL Server表中某些字段含有水平制表符、换行符、回车符、反斜杠的解决办法
- 总结一下linux下的用户管理
- Intel caffe 安装及用gpu训练即去掉CPU-Only的方法
- 数据结构--双向循环链表实践
- CodeForces
- Codeforce Round #384 (Div 2) C
- C++ 中字符输入(cin,getline,cin.get)
- 向LinearLayout布局中添加多个TableLayout布局,页面仅显示第一个TableLayout的问题
- html5权威指南pdf
- 第四节 CSS的三大特性
- ajax提交表单form,form包含文件上传