Caffe错误进行测试

时间:2016-04-15 03:49:12

标签: caffe

我已经在ubuntu中安装了cudnn和cuda,而我

  

make all -j4

在caffe-master目录下,它传递得很好。但是当我

  

进行测试

它显示:

CXX src/caffe/test/test_im2col_layer.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 src/caffe/test/test_im2col_layer.cpp:5:
./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:127: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:15:28: note: in definition of macro ‘CUDNN_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 src/caffe/test/test_im2col_layer.cpp:5:
/usr/local/cuda/include/cudnn.h:799:27: note: declared here
 cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(
                           ^
Makefile:572: recipe for target '.build_release/src/caffe/test/test_im2col_layer.o' failed
make: *** [.build_release/src/caffe/test/test_im2col_layer.o] Error 1

我安装了最新版本的cudnn(用于linux的cudnn v5库)和cuda(cuda 7.5)。谁能告诉我如何解决这个问题?非常感谢!

3 个答案:

答案 0 :(得分:3)

CuDNN v5与caffe不兼容。您可以尝试制作一个分叉并合并它:https://github.com/BVLC/caffe/pull/3919/files,但它没有得到官方支持。

答案 1 :(得分:1)

请注意,最新的Caffe(2016年11月8日)声明它支持CUDA 7 +。

我仍然需要解决这个问题,因为我正在使用一个较旧的caffe链接到一个更快的rcnn github repo。我正在升级它以支持CUDNN 5和CUDA 8.请注意我不是Caffe专家,但是在我成功编译之后所有测试都成功运行。

对于签名似乎已经改变的方法,我发现还有_v3和_v4等价物(对我来说,我看了一下/usr/local/cuda/include/cudnn.h)。我改变了失败的方法

FROM:     CUDNN_CHECK(cudnnSetPooling2dDescriptor(* pool_desc,* mode,h,w,

TO:     CUDNN_CHECK(cudnnSetPooling2dDescriptor _v3 (* pool_desc,* mode,h,w,  4. src / caffe / layers / cudnn_conv_layer.cu

我需要在以下文件中执行类似的操作:

  1. 的src / CAFFE /层/ cudnn_sigmoid_layer.cu
  2. src / caffe / layers / cudnn_relu_layer.cu
  3. 的src / CAFFE /层/ cudnn_conv_layer.cu
  4. 的src / CAFFE /层/ cudnn_tanh_layer.cu
  5. 希望对你有所帮助!

答案 2 :(得分:0)

尝试if(!window['plugins']) { //browser } - > def iso_8601_format(dt): """YYYY-MM-DDThh:mm:ssTZD (1997-07-16T19:20:30-03:00)""" if dt is None: return "" fmt_datetime = dt.strftime('%Y-%m-%dT%H:%M:%S') tz = dt.utcoffset() if tz is None: fmt_timezone = "+00:00" else: fmt_timezone = str.format('{0:+06.2f}', float(tz.total_seconds() / 3600)) return fmt_datetime + fmt_timezone - > make clean - > make all。如果您有权限错误,请使用make test