Class LibMatrixCuDNNConvolutionAlgorithm

java.lang.Object
org.apache.sysds.runtime.matrix.data.LibMatrixCuDNNConvolutionAlgorithm
All Implemented Interfaces:
AutoCloseable

public class LibMatrixCuDNNConvolutionAlgorithm extends Object implements AutoCloseable
This class is a wrapper that contain necessary data structures to invoke a cudnn convolution* functions (such as cudnnConvolutionForward, etc) It implements autocloseable to simplify the LibMatrixCuDNN code and also avoids potential memory leaks. The caller has to use the factory methods: cudnnGetConvolutionForwardAlgorithm, cudnnGetConvolutionBackwardFilterAlgorithm and cudnnGetConvolutionBackwardDataAlgorithm to get the LibMatrixCuDNNConvolutionAlgorithm object. The naming of this methods is consistent with that of CuDNN library.
  • Field Details

    • algo

      public int algo
    • workSpace

      public jcuda.Pointer workSpace
    • sizeInBytes

      public long sizeInBytes
  • Method Details

    • close

      public void close()
      Deallocates the tensor and filter descriptors as well as allocated workspace
      Specified by:
      close in interface AutoCloseable
    • cudnnGetConvolutionForwardAlgorithm

      public static LibMatrixCuDNNConvolutionAlgorithm cudnnGetConvolutionForwardAlgorithm(GPUContext gCtx, String instName, int N, int C, int H, int W, int K, int R, int S, int pad_h, int pad_w, int stride_h, int stride_w, int P, int Q, long workspaceLimit)
      Factory method to get the algorithm wrapper for convolution forward
      Parameters:
      gCtx - a valid GPUContext
      instName - the invoking instruction's name for record Statistics.
      N - number of input images
      C - number of channels
      H - height of each image
      W - width of each image
      K - number of output "channels"
      R - height of filter
      S - width of filter
      pad_h - padding height
      pad_w - padding width
      stride_h - stride height
      stride_w - string width
      P - output height
      Q - output width
      workspaceLimit - maximum intermediate memory to use
      Returns:
      algorithm wrapper
    • cudnnGetConvolutionBackwardFilterAlgorithm

      public static LibMatrixCuDNNConvolutionAlgorithm cudnnGetConvolutionBackwardFilterAlgorithm(GPUContext gCtx, String instName, int N, int C, int H, int W, int K, int R, int S, int pad_h, int pad_w, int stride_h, int stride_w, int P, int Q, long workspaceLimit)
      Factory method to get the algorithm wrapper for convolution backward filter
      Parameters:
      gCtx - a valid GPUContext
      instName - the invoking instruction's name for record Statistics.
      N - number of input images
      C - number of channels
      H - height of each image
      W - width of each image
      K - number of output "channels"
      R - height of filter
      S - width of filter
      pad_h - padding height
      pad_w - padding width
      stride_h - stride height
      stride_w - string width
      P - output height
      Q - output width
      workspaceLimit - maximum intermediate memory to use
      Returns:
      algorithm wrapper
    • cudnnGetConvolutionBackwardDataAlgorithm

      public static LibMatrixCuDNNConvolutionAlgorithm cudnnGetConvolutionBackwardDataAlgorithm(GPUContext gCtx, String instName, int N, int C, int H, int W, int K, int R, int S, int pad_h, int pad_w, int stride_h, int stride_w, int P, int Q, long workspaceLimit)
      Factory method to get the algorithm wrapper for convolution backward data
      Parameters:
      gCtx - a valid GPUContext
      instName - the invoking instruction's name for record Statistics.
      N - number of input images
      C - number of channels
      H - height of each image
      W - width of each image
      K - number of output "channels"
      R - height of filter
      S - width of filter
      pad_h - padding height
      pad_w - padding width
      stride_h - stride height
      stride_w - string width
      P - output height
      Q - output width
      workspaceLimit - maximum intermediate memory to use
      Returns:
      algorithm wrapper