Fix CuDNNConvolutionLayer for cuDNN v4
authorFelix Abecassis <fabecassis@nvidia.com>
Thu, 10 Dec 2015 23:11:51 +0000 (15:11 -0800)
committerFelix Abecassis <fabecassis@nvidia.com>
Thu, 10 Dec 2015 23:11:51 +0000 (15:11 -0800)
Add a macro to check the current cuDNN version

include/caffe/util/cudnn.hpp
src/caffe/layers/cudnn_conv_layer.cu

index b531dd5..8a7e17c 100644 (file)
@@ -7,6 +7,9 @@
 #include "caffe/common.hpp"
 #include "caffe/proto/caffe.pb.h"
 
+#define CUDNN_VERSION_MIN(major, minor, patch) \
+    (CUDNN_VERSION >= (major * 1000 + minor * 100 + patch))
+
 #define CUDNN_CHECK(condition) \
   do { \
     cudnnStatus_t status = condition; \
index 1990e93..42c4fd0 100644 (file)
@@ -30,11 +30,19 @@ void CuDNNConvolutionLayer<Dtype>::Forward_gpu(
       // Bias.
       if (this->bias_term_) {
         const Dtype* bias_data = this->blobs_[1]->gpu_data();
+#if CUDNN_VERSION_MIN(4, 0, 0)
+        CUDNN_CHECK(cudnnAddTensor(handle_[g],
+              cudnn::dataType<Dtype>::one,
+              bias_desc_, bias_data + bias_offset_ * g,
+              cudnn::dataType<Dtype>::one,
+              top_descs_[i], top_data + top_offset_ * g));
+#else
         CUDNN_CHECK(cudnnAddTensor(handle_[g], CUDNN_ADD_SAME_C,
               cudnn::dataType<Dtype>::one,
               bias_desc_, bias_data + bias_offset_ * g,
               cudnn::dataType<Dtype>::one,
               top_descs_[i], top_data + top_offset_ * g));
+#endif
       }
     }