1. 3d-caffe在编译时不能通过,检查报错信息。和能成功编译的BVLC-caffe做对比,发现是3D-caffe/include/caffe/util/cudnn.hpp文件中的setConvolutionDesc{}函数不一样,可能是cudnn版本问题导致编译不成功。
BVLC-caffe:https://github.com/BVLC/caffe/blob/master/include/caffe/util/cudnn.hpp
于是copy BVLC-caffe中的cudnn.hpp文件,对setConvolutionDesc{}函数进行了修改,之后如下所示:
#if CUDNN_VERSION_MIN(6, 0, 0)
CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION,
dataType<Dtype>::type));
#else
CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION));
#endif
同时对cudnnGetErrorString{}函数进行了修改
#if CUDNN_VERSION_MIN(6, 0, 0)
case CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING:
return "CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING";
#endif
#if CUDNN_VERSION_MIN(7, 0, 0)
case CUDNN_STATUS_RUNTIME_IN_PROGRESS:
return "CUDNN_STATUS_RUNTIME_IN_PROGRESS";
case CUDNN_STATUS_RUNTIME_FP_OVERFLOW:
return "CUDNN_STATUS_RUNTIME_FP_OVERFLOW";
#endif
再次编译后顺利通过,只是会出现一些如下的warnings:
/ghome/zhaojie/NeuronSeg/3D-Caffe/include/caffe/util/cudnn.hpp:22:10: warning: enumeration value 'CUDNN_STATUS_RUNTIME_PREREQUISI