当前位置: 代码迷 >> 综合 >> 配置caffe-segnet -cudnn::createpoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_PoolMethod, c
  详细解决方案

配置caffe-segnet -cudnn::createpoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_PoolMethod, c

热度:110   发布时间:2023-10-12 00:21:13.0

一颗行走的大白菜

问题描述:


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 src/caffe/solver.cpp:7:
./include/caffe/util/cudnn.hpp: In function ‘void caffe::cudnn::createPoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_PoolMethod, cudnnPoolingMode_t*, int, int, int, int, int, int)’:
./include/caffe/util/cudnn.hpp:124:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor(cudnnPoolingDescriptor_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; \

配置caffe-segnet -cudnn::createpoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_PoolMethod, c


问题解决:

这是因为当前版本的caffe的cudnn实现与系统所安装的cudnn的版本不一致引起的。

解决办法:

1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.

2.将./src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。 都替换成最新版的caffe里的相应的同名文件