caffe深度学习【十】编译错误:In file included from ./include/caffe/util/device_alternate.hpp:40:0,

早上想跑一下目标检测RON算法

https://github.com/taokong/RON

 

git下来之后,要编译他的caffe时,出现如下问题:

PROTOC src/caffe/proto/caffe.proto
CXX .build_release/src/caffe/proto/caffe.pb.cc
CXX src/caffe/solvers/adadelta_solver.cpp
In file included from ./include/caffe/util/device_alternate.hpp:40:0,
                 from ./include/caffe/common.hpp:19,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/net.hpp:10,
                 from ./include/caffe/solver.hpp:7,
                 from ./include/caffe/sgd_solvers.hpp:7,
                 from src/caffe/solvers/adadelta_solver.cpp:3:
./include/caffe/util/cudnn.hpp: In function 鈥榗onst char* cudnnGetErrorString(cudnnStatus_t)鈥

                                                                                                ./include/caffe/util/cudnn.hpp:21:10: warning: enumeration value 鈥楥UDNN_STATUS_RUNTIME_PREREQUISITE_MISSING鈥not handled in switch [-Wswitch]
   switch (status) {
          ^
./include/caffe/util/cudnn.hpp: In function 鈥榲oid caffe::cudnn::setConvolutionDesc(cudnnConvolutionStruct**, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, int, int, int, int)鈥

                                                                                                                                                                                       ./include/caffe/util/cudnn.hpp:113:70: error: too few arguments to function 鈥榗udnnStatus_t cudnnSetConvolution2dDescriptor(cudnnConvolutionDescriptor_t, int, int, int, int, int, int, cudnnConvolutionMode_t, cudnnDataType_t)鈥
       pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION));
                                                                      ^
./include/caffe/util/cudnn.hpp:15:28: note: in definition of macro 鈥楥UDNN_CHECK鈥
     cudnnStatus_t status = condition; \
                            ^
In file included from ./include/caffe/util/cudnn.hpp:5:0,
                 from ./include/caffe/util/device_alternate.hpp:40,
                 from ./include/caffe/common.hpp:19,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/net.hpp:10,
                 from ./include/caffe/solver.hpp:7,
                 from ./include/caffe/sgd_solvers.hpp:7,
                 from src/caffe/solvers/adadelta_solver.cpp:3:
/usr/local/cuda/include/cudnn.h:500:27: note: declared here
 cudnnStatus_t CUDNNWINAPI cudnnSetConvolution2dDescriptor( cudnnConvolutionDescriptor_t convDesc,
                           ^
Makefile:575: recipe for target '.build_release/src/caffe/solvers/adadelta_solver.o' failed
make: *** [.build_release/src/caffe/solvers/adadelta_solver.o] Error 1

caffe深度学习【十】编译错误:In file included from ./include/caffe/util/device_alternate.hpp:40:0,_第1张图片

 

 

出现原因:

因为当前你编译的caffe版本(从github下下来的,别人实现过的)的cudnn版本,

与你之前安装纯正caffe版本时候,系统所安装的cudnn的版本不一致引起的。

 

 

解决办法:

只需要把cudnn相关的文件替换成你之前能够成功编译的caffe版本里的文件即可:

1.将编译不成功的caffe里面的     ./include/caffe/util/cudnn.hpp   换成你编译成功过的caffe里的cudnn.hpp的版本;

2.将编译不成功的caffe里面的  ./src/caffe/layer   里的,所有以cudnn开头的文件,例如 cudnn_conv_layer.cpp , cudnn_conv_layer.cu , cudnn_lcn_layer.cpp , cudnn_lcn_layer.cu , cudnn_lrn_layer.cpp , cudnn_lrn_layer.cu , cudnn_pooling_layer.cpp , cudnn_pooling_layer.cu , cudnn_relu_layer.cpp , cudnn_relu_layer.cu , cudnn_sigmoid_layer.cpp , cudnn_sigmoid_layer.cu , cudnn_softmax_layer.cpp , cudnn_softmax_layer.cu , cudnn_tanh_layer.cpp , cudnn_tanh_layer.cu   全部换成你编译成功过的caffe里的同名的版本。

(我当时是有这么18个文件,全部替换掉即可

caffe深度学习【十】编译错误:In file included from ./include/caffe/util/device_alternate.hpp:40:0,_第2张图片

 

结果:

替换之后

重新输入:

make clean
make

caffe深度学习【十】编译错误:In file included from ./include/caffe/util/device_alternate.hpp:40:0,_第3张图片

caffe深度学习【十】编译错误:In file included from ./include/caffe/util/device_alternate.hpp:40:0,_第4张图片

编译成功!!!

 

你可能感兴趣的:(Caffe,编译,问题,caffe深度学习)