public static extern cudnnStatus cudnnGetConvolutionBackwardDataAlgorithm( cudnnHandle handle, cudnnFilterDescriptor filterDesc, cudnnTensorDescriptor diffDesc, cudnnConvolutionDescriptor convDesc, cudnnTensorDescriptor gradDesc, cudnnConvolutionBwdDataPreference preference, SizeT memoryLimitInbytes, ref cudnnConvolutionBwdDataAlgo algo );
/// <summary> /// This function serves as a heuristic for obtaining the best suited algorithm for /// cudnnConvolutionBackwardData_v3 for the given layer specifications. Based /// on the input preference, this function will either return the fastest algorithm or the /// fastest algorithm within a given memory limit. For an exhaustive search for the fastest /// algorithm, please use cudnnFindConvolutionBackwardDataAlgorithm. /// </summary> /// <param name="filterDesc">Handle to a previously initialized filter descriptor.</param> /// <param name="diffDesc">Handle to the previously initialized input differential tensor descriptor.</param> /// <param name="convDesc">Previously initialized convolution descriptor.</param> /// <param name="gradDesc">Handle to the previously initialized output tensor descriptor.</param> /// <param name="preference">Enumerant to express the preference criteria in terms of memory /// requirement and speed.</param> /// <param name="memoryLimitInbytes">It is to specify the maximum amount of GPU memory the user is willing to /// use as a workspace. This is currently a placeholder and is not used.</param> /// <returns>Enumerant that specifies which convolution algorithm should be used to /// compute the results according to the specified preference</returns> public cudnnConvolutionBwdDataAlgo GetConvolutionBackwardDataAlgorithm(FilterDescriptor filterDesc, TensorDescriptor diffDesc, ConvolutionDescriptor convDesc, TensorDescriptor gradDesc, cudnnConvolutionBwdDataPreference preference, SizeT memoryLimitInbytes ) { cudnnConvolutionBwdDataAlgo algo = new cudnnConvolutionBwdDataAlgo(); res = CudaDNNNativeMethods.cudnnGetConvolutionBackwardDataAlgorithm(_handle, filterDesc.Desc, diffDesc.Desc, convDesc.Desc, gradDesc.Desc, preference, memoryLimitInbytes, ref algo); Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cudnnGetConvolutionBackwardDataAlgorithm", res)); if (res != cudnnStatus.Success) throw new CudaDNNException(res); return algo; }