CNTK の cuDNN v4 ビルドエラー対応

エラー:

1>C:/CNTK/Source/Math/CuDnnConvolutionEngine.cu(507): error : argument of type "const float *" is incompatible with parameter of type "void *"

 

原因:

cuDNN v4 Rc から cuDNN v4 Prodで、APIの引数が変わった。

Some change between cuDNN 4.0 rc and cnDNN 4.0 prod will cause the build fault. · Issue #127 · Microsoft/CNTK · GitHub

 

対応:

Before

CUDNN_CALL(cudnnBatchNormalizationBackward(m_cudnn, mode, &C::One, &C::One, t(inT), ptr(in), t(inT), ptr(srcGrad), t(inT), ptr(grad),
t(scaleBiasT), ptr(scale), ptr(scaleGrad), ptr(biasGrad), CUDNN_BN_MIN_EPSILON, ptr(saveMean), ptr(saveInvStdDev)));

 

After

CUDNN_CALL(cudnnBatchNormalizationBackward(m_cudnn, mode, &C::One, &C::One, &C::One, &C::One, t(inT), ptr(in), t(inT), ptr(srcGrad), t(inT), ptr(grad),
t(scaleBiasT), ptr(scale), ptr(scaleGrad), ptr(biasGrad), CUDNN_BN_MIN_EPSILON, ptr(saveMean), ptr(saveInvStdDev)));