|
cudnn_conv_layer.cpp:53] Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0)
CUDNN_STATUS_INTERNAL_ERROR
cudnn_conv_layer.cpp:的第53行:
for (int g = 0; g < this->group_ * CUDNN_STREAMS_PER_GROUP; g++) {
CUDA_CHECK(cudaStreamCreate(&stream_[g]));
CUDNN_CHECK(cudnnCreate(&handle_[g])); // 53行
CUDNN_CHECK(cudnnSetStream(handle_[g], stream_[g]));
workspace[g] = NULL;
}
ConvolutionParameter
optional uint32 group = 5 [default = 1]; // The group size for group conv
enum Engine {
DEFAULT = 0;
CAFFE = 1;
CUDNN = 2;
}
optional Engine engine = 11 [default = DEFAULT];
大牛的答案:
please uncomment engine: CAFFE used in the conv layers with group.
do not use default CUDNN engine.
说白了就是:在带group的convolution_param 加上 engine: CAFFE 不要使用默认的engine [default = DEFAULT]
convolution_param{
num_output:8
group:8
kernel_size:3
stride:1
pad:1
bias_term: false
engine: CAFFE
}
engine这个参数,只有上述部分layer里才可以定义
解释:这是由于卷积层中有大量的带group参数的卷积,cudnn在处理这种卷积时需要的内存较多
已经解决问题 后续还需要深入研究!
|
|