大家好,欢迎来到IT知识分享网。
caffe2环境配置之一二
环境 : Centos 7 + cuda-8.0 + cudnn-v6.0 + python2.7 + caffe2
该方法适应于权限有限的用户(无sudo
权限)(不能在/usr/local生成protobuf等自编译文件
)
以及处于公司内网不能访问外网情况
1 下载并编译安装
1.1下载caffe2以及第三方库
对于处于内网环境来说,一定要在外网把第三方库都下完全了,
git clone --recursive https://github.com/caffe2/caffe2.git
git源代码时要记得加上–recursive,便会自动递归更新子模块
1.2 编译安装
cd ROOT_CAFFE2
mkdir build && cd build
cmake ..
make -j8 install
当需要指定安装目录时,可以将 make -j8 install
改为 export DESTDIR="$HOME" && make -j8 install
, 然后配置环境
export PATH="/home/XX/usr/local/caffe2:$PATH"
export PYTHONPATH=/home/XX/usr/local:$PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/home/XX/caffe2/build
export LD_LIBRARY_PATH=/home/XX/usr/local/lib:$LD_LIBRARY_PATH
1.3 验证是否安装成功
python -c'from caffe2.python import core'2>/dev/null && echo"Success" || echo"Failure"
2 protobuf
protobuf版本不对会带来各种问题,比如
2.1 问题来源1:
.build_release/lib/libcaffe.so: undefined reference to google ::protobuf…
此时你的protobuf库与链接库已经混乱了
2.2 问题来源2:
*pb.h:9:42:fatal error:google/protobuf/stubs/common.h:No such file or directory
看看这个你应该知道,找不到头文件,没有链接上去:
来自stackoverflow.解决方案:
g++ -I/path/to/protobuf/include -c my-source.cc
./configure CXXFLAGS=-I/path/to/protobuf/include
sudo apt-get install libprotobuf-dev protobuf-compiler
亲测有效解决方案:在.bashrc添加protobuf为c,c++链接库
export OBJC_INCLUDE_PATH=$PROTOBUF_CAFFE
export C_INCLUDE_PATH=$PROTOBUF_CAFFE
export CPLUS_INCLUDE_PATH=$PROTOBUF_CAFFE
其中,PROTOBUF_CAFFE=ROOT_CAFFE2/third_party/protobuf/src
,为下载的第三方库中protobuf源码
2.3问题来源3
“cannot import name descriptor_pb2”
TypeError: __init__() got an unexpected keyword argument 'file'
解决方案:将anaconda下的google下的protobuf更新即可
终极解决方案: 将各种冲突protobuf源屏蔽,比如Anoconda以及tensorflow中等,在编译安装过程最好通过直接更改.bashrc文件关掉其它版本的protobuf,安装完成后再重新打开个各版本protobuf即可
3 cmake时注意事项
因caffe2在cmake时会寻找/usr/local/
下面的库,故若无权限在/usr/local/
时便会出现一些问题,其中有关protobuf出现问题最多
USE_NCCL
USE_LITE_PROTO
BUILD_CUSTOM_PROTOBUF
这几个开关根据情况而定,如若cmake出错,将相应的开关关闭即可,例如将1.2中的cmake ..
更改为
cmake -DUSE_NCCL=OFF -DUSE_LITE_PROTO=ON -DBUILD_CUSTOM_PROTOBUF=ON ..
4 python 包与caffe2版本问题
4.1 - ImportError: No module named past.builtins
缺少future模块
解决方案:sudo pip install future
对于内网来说,先从外网下载好相应的python future
安装包,再在内网安装即可
4.2RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9
numpy版本不匹配
可以找到相应的numpy版本替换,可参考方案来更新,博主直接重新更新了Anaconda为最新版本解决了问题
5 gcc g++ 版本问题(4.85以上)
caffe2::CUDAContext::~CUDAContext()': reshape_op_gpu_test.cc:(.text._ZN6caffe211CUDAContextD2Ev[_ZN6caffe211CUDAContextD5Ev]+0x420): undefined reference toTLS init function for caffe2::CUDAContext::cuda_objects_'
libCaffe2_GPU.so: undefined reference to `TLS init function for caffe2::CuDNNWrapper::tls_cudnn_handles_'
collect2: error: ld returned 1 exit status
make[3]: *** [caffe2/binaries/reshape_op_gpu_test] Error 1
解决方案:gcc,g++版本要大于等于4.85
References:
1.https://www.cnblogs.com/fanninnypeom/p/5982719.html
2.https://blog.csdn.net/zziahgf/article/details/72461175
3.http://www.cnblogs.com/yiruparadise/p/5671771.html
4.https://segmentfault.com/a/1190000014500134?utm_source=index-hottest
6.https://blog.csdn.net/zhw864680355/article/details/79602453
7.https://github.com/caffe2/caffe2/issues/1297
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23124.html