Library/ManagedCuda/CudaDNN/CudaDNNContext.cs
/// <summary>
/// This function attempts all cuDNN algorithms and outputs performance metrics to a
/// user-allocated array of cudnnConvolutionFwdAlgoPerf_t. These metrics are written
/// in sorted fashion where the first element has the lowest compute time.
/// </summary>
/// <param name="srcDesc">Handle to the previously initialized input tensor descriptor.</param>
/// <param name="filterDesc">Handle to a previously initialized filter descriptor.</param>
/// <param name="convDesc">Previously initialized convolution descriptor.</param>
/// <param name="destDesc">Handle to the previously initialized output tensor descriptor.</param>
/// <param name="requestedAlgoCount">The maximum number of elements to be stored in perfResults.</param>
/// <returns>An array to store performance metrics sorted ascending by compute time.</returns>
This function attempts all cuDNN algorithms and outputs performance metrics to a
user-allocated array of cudnnConvolutionFwdAlgoPerf_t. These metrics are written
in sorted fashion where the first element has the lowest compute time.
This function attempts all cuDNN algorithms and outputs performance metrics to a user - allocated array of cudnnConvolutionFwdAlgoPerf_t . These metrics are written in sorted fashion where the first element has the lowest compute time .
public cudnnConvolutionFwdAlgoPerf[] FindConvolutionForwardAlgorithm(TensorDescriptor srcDesc,
                                                    FilterDescriptor filterDesc,
                                                    ConvolutionDescriptor convDesc,
                                                    TensorDescriptor destDesc,
                                                    int requestedAlgoCount
                                                )
        {
            cudnnConvolutionFwdAlgoPerf[] temp = new cudnnConvolutionFwdAlgoPerf[requestedAlgoCount];
            int returnedAlgoCount = 0;
            res = CudaDNNNativeMethods.cudnnFindConvolutionForwardAlgorithm(_handle, srcDesc.Desc, filterDesc.Desc, convDesc.Desc, destDesc.Desc, requestedAlgoCount, ref returnedAlgoCount, temp);
            Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cudnnFindConvolutionForwardAlgorithm", res));
            if (res != cudnnStatus.Success) throw new CudaDNNException(res);
            if (returnedAlgoCount <= 0) return null;
            cudnnConvolutionFwdAlgoPerf[] perfResults = new cudnnConvolutionFwdAlgoPerf[returnedAlgoCount];
            Array.Copy(temp, perfResults, returnedAlgoCount);
            return perfResults;
        }
public cudnnConvolutionFwdAlgoPerf [ ] FindConvolutionForwardAlgorithm ( TensorDescriptor srcDesc , FilterDescriptor filterDesc , ConvolutionDescriptor convDesc , TensorDescriptor destDesc , int requestedAlgoCount ) { cudnnConvolutionFwdAlgoPerf [ ] temp = new cudnnConvolutionFwdAlgoPerf [ requestedAlgoCount ] ; int returnedAlgoCount = 0 ; res = CudaDNNNativeMethods . cudnnFindConvolutionForwardAlgorithm ( _handle , srcDesc . Desc , filterDesc . Desc , convDesc . Desc , destDesc . Desc , requestedAlgoCount , ref returnedAlgoCount , temp ) ; Debug . WriteLine ( String . Format ( " " , DateTime . Now , " " , res ) ) ; if ( res != cudnnStatus . Success ) throw new CudaDNNException ( res ) ; if ( returnedAlgoCount <= 0 ) return null ; cudnnConvolutionFwdAlgoPerf [ ] perfResults = new cudnnConvolutionFwdAlgoPerf [ returnedAlgoCount ] ; Array . Copy ( temp , perfResults , returnedAlgoCount ) ; return perfResults ; }
This function attempts all cuDNN algorithms and outputs performance metrics to a
user-allocated array of cudnnConvolutionFwdAlgoPerf_t.
This function attempts all cuDNN algorithms and outputs performance metrics to a user - allocated array of cudnnConvolutionFwdAlgoPerf_t .
An array to store performance metrics sorted ascending by compute time.
An array to store performance metrics sorted ascending by compute time .
srcDesc
TensorDescriptor
Handle to the previously initialized input tensor descriptor.
Handle to the previously initialized input tensor descriptor .
filterDesc
FilterDescriptor
Handle to a previously initialized filter descriptor.
Handle to a previously initialized filter descriptor .
convDesc
ConvolutionDescriptor
Previously initialized convolution descriptor.
Previously initialized convolution descriptor .
destDesc
TensorDescriptor
Handle to the previously initialized output tensor descriptor.
Handle to the previously initialized output tensor descriptor .
requestedAlgoCount
int
The maximum number of elements to be stored in perfResults.
The maximum number of elements to be stored in perfResults .