Ubuntu安装caffe和rcnn的兼容性问题

来源:互联网 发布:中华人软件下载 编辑:程序博客网 时间:2024/06/11 22:56

rcnn代码地址  https://github.com/rbgirshick/py-faster-rcnn

最新版caffe地址 https://github.com/BVLC/caffe


如果你安装的cudnn比较新,则rcnn自带的caffe无法编译通过,报错显示

In file included from src/caffe/util/cudnn.cpp:2:0:
./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’:
./include/caffe/util/cudnn.hpp:18:10: warning: enumeration value ‘CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING’ not handled in switch [
-Wswitch]
  switch (status) {
         ^
./include/caffe/util/cudnn.hpp:18:10: warning: enumeration value ‘CUDNN_STATUS_RUNTIME_IN_PROGRESS’ not handled in switch [-Wswitch]
./include/caffe/util/cudnn.hpp:18:10: warning: enumeration value ‘CUDNN_STATUS_RUNTIME_FP_OVERFLOW’ not handled in switch [-Wswitch]
./include/caffe/util/cudnn.hpp: In function ‘void caffe::cudnn::setConvolutionDesc(cudnnConvolutionStruct**, cudnnTensorDescriptor_t
, cudnnFilterDescriptor_t, int, int, int, int)’:
./include/caffe/util/cudnn.hpp:105:70: error: too few arguments to function ‘cudnnStatus_t cudnnSetConvolution2dDescriptor(cudnnConv
olutionDescriptor_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:12:28: note: in definition of macro ‘CUDNN_CHECK’
    cudnnStatus_t status = condition; \
                           ^
In file included from ./include/caffe/util/cudnn.hpp:5:0,
                from src/caffe/util/cudnn.cpp:2:
/usr/include/cudnn.h:537:27: note: declared here
cudnnStatus_t CUDNNWINAPI cudnnSetConvolution2dDescriptor( cudnnConvolutionDescriptor_t convDesc,
                          ^
In file included from src/caffe/util/cudnn.cpp:2:0:
./include/caffe/util/cudnn.hpp: In function ‘void caffe::cudnn::createPoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_Pool
Method, cudnnPoolingMode_t*, int, int, int, int, int, int)’:
./include/caffe/util/cudnn.hpp:124:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor(cudnnPoolingD
escriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, int, int, int, int, int, int)’
        pad_h, pad_w, stride_h, stride_w));
                                        ^
./include/caffe/util/cudnn.hpp:12:28: note: in definition of macro ‘CUDNN_CHECK’
    cudnnStatus_t status = condition; \
                           ^
In file included from ./include/caffe/util/cudnn.hpp:5:0,
                from src/caffe/util/cudnn.cpp:2:
/usr/include/cudnn.h:1031:27: note: declared here                                                                                    
cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(                                                                              
                          ^                                                                                                         
In file included from /usr/local/cuda/include/cuda_fp16.h:1943:0,
                from /usr/local/cuda/include/cublas_api.h:75,
                from /usr/local/cuda/include/cublas_v2.h:65,
                from ./include/caffe/util/device_alternate.hpp:34,
                from ./include/caffe/common.hpp:19,
                from ./include/caffe/util/db.hpp:6,
                from src/caffe/util/db.cpp:1:
/usr/local/cuda/include/cuda_fp16.hpp: In member function ‘__half2::operator __half2_raw() const’:
/usr/local/cuda/include/cuda_fp16.hpp:93:70: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-a
liasing]
#define __HALF2_TO_UI(var) *(reinterpret_cast<unsigned int *>(&(var)))
                                                                     ^
/usr/local/cuda/include/cuda_fp16.hpp:242:73: note: in expansion of macro ‘__HALF2_TO_UI’
    __CUDA_HOSTDEVICE__ operator __half2_raw() const { __half2_raw ret; __HALF2_TO_UI(ret) = __HALF2_TO_CUI(*this); return ret; }

证明你的cudnn版本太新


解决方法

下载最新版本的caffe,将旧版caffe里的几个文件替换成最新版里面的

caffe-fast-rcnn/include/caffe/util/cudnn.hpp  

caffe-fast-rcnn/include/caffe/layers/下面cudnn_开头的所有文件

caffe-fast-rcnn/src/caffe/util/cudnn.cpp

caffe-fast-rcnn/src/caffe/layers/ 下面cudnn_开头的所有文件

提示:要将旧代码从文件夹里面移除,不能只改名字做备份,否则依旧有错误提示

阅读全文
0 0
原创粉丝点击