Class ExecutionConfig

java.lang.Object
org.apache.sysds.runtime.instructions.gpu.context.ExecutionConfig

public class ExecutionConfig extends Object
Java Wrapper to specify CUDA execution configuration for launching custom kernels
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    int
     
    int
     
    int
     
    int
     
    int
     
    int
     
    int
     
    jcuda.driver.CUstream
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    ExecutionConfig(int gridDimX, int blockDimX)
    Convenience constructor for setting the number of blocks, number of threads and the shared memory size
    ExecutionConfig(int gridDimX, int blockDimX, int sharedMemBytes)
    Convenience constructor for setting the number of blocks, number of threads and the shared memory size
    ExecutionConfig(int gridDimX, int gridDimY, int blockDimX, int blockDimY)
    Convenience constructor for setting the number of blocks, number of threads and the shared memory size
    ExecutionConfig(int gridDimX, int gridDimY, int blockDimX, int blockDimY, int sharedMemBytes)
    Convenience constructor for setting the number of blocks, number of threads and the shared memory size
  • Method Summary

    Modifier and Type
    Method
    Description
    Use this for simple vector operations and use following in the kernel int index = blockIdx.x * blockDim.x + threadIdx.x
    Use this for simple vector operations and use following in the kernel int index = blockIdx.x * blockDim.x + threadIdx.x
     

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • gridDimX

      public int gridDimX
    • gridDimY

      public int gridDimY
    • gridDimZ

      public int gridDimZ
    • blockDimX

      public int blockDimX
    • blockDimY

      public int blockDimY
    • blockDimZ

      public int blockDimZ
    • sharedMemBytes

      public int sharedMemBytes
    • stream

      public jcuda.driver.CUstream stream
  • Constructor Details

    • ExecutionConfig

      public ExecutionConfig(int gridDimX, int blockDimX, int sharedMemBytes)
      Convenience constructor for setting the number of blocks, number of threads and the shared memory size
      Parameters:
      gridDimX - Number of blocks on the horizontal axis of the grid (for CUDA Kernel)
      blockDimX - Number of threads on the horizontal axis of a block (for CUDA Kernel)
      sharedMemBytes - Amount of Shared memory (for CUDA Kernel)
    • ExecutionConfig

      public ExecutionConfig(int gridDimX, int blockDimX)
      Convenience constructor for setting the number of blocks, number of threads and the shared memory size
      Parameters:
      gridDimX - Number of blocks on the horizontal axis of the grid (for CUDA Kernel)
      blockDimX - Number of threads on the horizontal axis of a block (for CUDA Kernel)
    • ExecutionConfig

      public ExecutionConfig(int gridDimX, int gridDimY, int blockDimX, int blockDimY)
      Convenience constructor for setting the number of blocks, number of threads and the shared memory size
      Parameters:
      gridDimX - Number of blocks on the horizontal axis of the grid (for CUDA Kernel)
      gridDimY - Number of blocks on the vertical axis of the grid (for CUDA Kernel)
      blockDimX - Number of threads on the horizontal axis of a block (for CUDA Kernel)
      blockDimY - Number of threads on the vertical axis of a block (for CUDA Kernel)=
    • ExecutionConfig

      public ExecutionConfig(int gridDimX, int gridDimY, int blockDimX, int blockDimY, int sharedMemBytes)
      Convenience constructor for setting the number of blocks, number of threads and the shared memory size
      Parameters:
      gridDimX - Number of blocks on the horizontal axis of the grid (for CUDA Kernel)
      gridDimY - Number of blocks on the vertical axis of the grid (for CUDA Kernel)
      blockDimX - Number of threads on the horizontal axis of a block (for CUDA Kernel)
      blockDimY - Number of threads on the vertical axis of a block (for CUDA Kernel)
      sharedMemBytes - Amount of Shared memory (for CUDA Kernel)
  • Method Details

    • getConfigForSimpleVectorOperations

      public static ExecutionConfig getConfigForSimpleVectorOperations(int numCells)
      Use this for simple vector operations and use following in the kernel int index = blockIdx.x * blockDim.x + threadIdx.x

      This tries to schedule as minimum grids as possible.

      Parameters:
      numCells - number of cells
      Returns:
      execution configuration
    • getConfigForSimpleMatrixOperations

      public static ExecutionConfig getConfigForSimpleMatrixOperations(int rlen, int clen)
      Use this for simple vector operations and use following in the kernel int index = blockIdx.x * blockDim.x + threadIdx.x

      Parameters:
      rlen - number of rows
      clen - number of columns
      Returns:
      execution configuration
    • toString

      public String toString()
      Overrides:
      toString in class Object