## Uses of Class
org.apache.sysds.runtime.controlprogram.caching.MatrixObject

- Packages that use MatrixObject
  Package | Description
  --- | ---
  org.apache.sysds.api.mlcontext |
  org.apache.sysds.hops.rewrite |
  org.apache.sysds.runtime.controlprogram.caching |
  org.apache.sysds.runtime.controlprogram.context |
  org.apache.sysds.runtime.controlprogram.paramserv |
  org.apache.sysds.runtime.controlprogram.paramserv.dp |
  org.apache.sysds.runtime.controlprogram.parfor |
  org.apache.sysds.runtime.controlprogram.parfor.opt |
  org.apache.sysds.runtime.instructions.fed |
  org.apache.sysds.runtime.instructions.gpu.context |
  org.apache.sysds.runtime.matrix.data |

- - ### Uses of MatrixObject in org.apache.sysds.api.mlcontext

    Methods in org.apache.sysds.api.mlcontext that return MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static MatrixObject` | MLContextConversionUtil.`binaryBlocksToMatrixObject(org.apache.spark.api.java.JavaPairRDD<MatrixIndexes,MatrixBlock> binaryBlocks)` Convert a `JavaPairRDD<MatrixIndexes, MatrixBlock>` to a `MatrixObject`.
    `static MatrixObject` | MLContextConversionUtil.`binaryBlocksToMatrixObject(org.apache.spark.api.java.JavaPairRDD<MatrixIndexes,MatrixBlock> binaryBlocks, MatrixMetadata matrixMetadata)` Convert a `JavaPairRDD<MatrixIndexes, MatrixBlock>` to a `MatrixObject`.
    `static MatrixObject` | MLContextConversionUtil.`dataFrameToMatrixObject(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> dataFrame)` Convert a `DataFrame` to a `MatrixObject`.
    `static MatrixObject` | MLContextConversionUtil.`dataFrameToMatrixObject(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> dataFrame, MatrixMetadata matrixMetadata)` Convert a `DataFrame` to a `MatrixObject`.
    `static MatrixObject` | MLContextConversionUtil.`doubleMatrixToMatrixObject(String variableName, double[][] doubleMatrix)` Convert a two-dimensional double array to a `MatrixObject`.
    `static MatrixObject` | MLContextConversionUtil.`doubleMatrixToMatrixObject(String variableName, double[][] doubleMatrix, MatrixMetadata matrixMetadata)` Convert a two-dimensional double array to a `MatrixObject`.
    `MatrixObject` | MLResults.`getMatrixObject(String outputName)` Obtain an output as a `MatrixObject`
    `static MatrixObject` | MLContextConversionUtil.`javaRDDStringCSVToMatrixObject(org.apache.spark.api.java.JavaRDD<String> javaRDD)` Convert a `JavaRDD<String>` in CSV format to a `MatrixObject`
    `static MatrixObject` | MLContextConversionUtil.`javaRDDStringCSVToMatrixObject(org.apache.spark.api.java.JavaRDD<String> javaRDD, MatrixMetadata matrixMetadata)` Convert a `JavaRDD<String>` in CSV format to a `MatrixObject`
    `static MatrixObject` | MLContextConversionUtil.`javaRDDStringIJVToMatrixObject(org.apache.spark.api.java.JavaRDD<String> javaRDD, MatrixMetadata matrixMetadata)` Convert a `JavaRDD<String>` in IJV format to a `MatrixObject` .
    `static MatrixObject` | MLContextConversionUtil.`matrixBlockToMatrixObject(String variableName, MatrixBlock matrixBlock, MatrixMetadata matrixMetadata)` Convert a `MatrixBlock` to a `MatrixObject`.
    `static MatrixObject` | MLContextConversionUtil.`rddStringCSVToMatrixObject(org.apache.spark.rdd.RDD<String> rdd)` Convert a `RDD<String>` in CSV format to a `MatrixObject`
    `static MatrixObject` | MLContextConversionUtil.`rddStringCSVToMatrixObject(org.apache.spark.rdd.RDD<String> rdd, MatrixMetadata matrixMetadata)` Convert a `RDD<String>` in CSV format to a `MatrixObject`
    `static MatrixObject` | MLContextConversionUtil.`rddStringIJVToMatrixObject(org.apache.spark.rdd.RDD<String> rdd, MatrixMetadata matrixMetadata)` Convert a `RDD<String>` in IJV format to a `MatrixObject`.
    `MatrixObject` | Matrix.`toMatrixObject()` Obtain the matrix as a SystemDS MatrixObject.
    `static MatrixObject` | MLContextConversionUtil.`urlToMatrixObject(URL url, MatrixMetadata matrixMetadata)` Convert a matrix at a URL to a `MatrixObject`.

    Methods in org.apache.sysds.api.mlcontext with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static double[][]` | MLContextConversionUtil.`matrixObjectTo2DDoubleArray(MatrixObject matrixObject)` Convert a `MatrixObject` to a two-dimensional double array.
    `static org.apache.spark.api.java.JavaPairRDD<MatrixIndexes,MatrixBlock>` | MLContextConversionUtil.`matrixObjectToBinaryBlocks(MatrixObject matrixObject, SparkExecutionContext sparkExecutionContext)` Convert a `MatrixObject` to a `JavaPairRDD<MatrixIndexes, MatrixBlock>`.
    `static org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>` | MLContextConversionUtil.`matrixObjectToDataFrame(MatrixObject matrixObject, SparkExecutionContext sparkExecutionContext, boolean isVectorDF)` Convert a `MatrixObject` to a `DataFrame`.
    `static org.apache.spark.api.java.JavaRDD<String>` | MLContextConversionUtil.`matrixObjectToJavaRDDStringCSV(MatrixObject matrixObject)` Convert a `MatrixObject` to a `JavaRDD<String>` in CSV format.
    `static org.apache.spark.api.java.JavaRDD<String>` | MLContextConversionUtil.`matrixObjectToJavaRDDStringIJV(MatrixObject matrixObject)` Convert a `MatrixObject` to a `JavaRDD<String>` in IJV format.
    `static List<String>` | MLContextConversionUtil.`matrixObjectToListStringCSV(MatrixObject matrixObject)` Convert a `MatrixObject` to a `List<String>` in CSV format.
    `static List<String>` | MLContextConversionUtil.`matrixObjectToListStringIJV(MatrixObject matrixObject)` Convert a `MatrixObject` to a `List<String>` in IJV format.
    `static org.apache.spark.rdd.RDD<String>` | MLContextConversionUtil.`matrixObjectToRDDStringCSV(MatrixObject matrixObject)` Convert a `MatrixObject` to a `RDD<String>` in CSV format.
    `static org.apache.spark.rdd.RDD<String>` | MLContextConversionUtil.`matrixObjectToRDDStringIJV(MatrixObject matrixObject)` Convert a `MatrixObject` to a `RDD<String>` in IJV format.

    Constructors in org.apache.sysds.api.mlcontext with parameters of type MatrixObject
    Constructor and Description
    `Matrix(MatrixObject matrixObject, SparkExecutionContext sparkExecutionContext)`

  - ### Uses of MatrixObject in org.apache.sysds.hops.rewrite

    Methods in org.apache.sysds.hops.rewrite with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static void` | HopRewriteUtils.`copyLineNumbers(MatrixObject mo, Hop tread)`
    `static DataOp` | HopRewriteUtils.`createTransientRead(String name, MatrixObject mo)`

  - ### Uses of MatrixObject in org.apache.sysds.runtime.controlprogram.caching

    Constructors in org.apache.sysds.runtime.controlprogram.caching with parameters of type MatrixObject
    Constructor and Description
    `MatrixObject(MatrixObject mo)` Copy constructor that copies meta data but NO data.

  - ### Uses of MatrixObject in org.apache.sysds.runtime.controlprogram.context

    Methods in org.apache.sysds.runtime.controlprogram.context that return MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `MatrixObject` | ExecutionContext.`allocateGPUMatrixObject(String varName, long numRows, long numCols)` Allocates the `GPUObject` for a given LOPS Variable (eg.
    `static MatrixObject` | ExecutionContext.`createMatrixObject(MatrixBlock mb)`
    `MatrixObject` | ExecutionContext.`getMatrixInputForGPUInstruction(String varName, String opcode)`
    `MatrixObject` | ExecutionContext.`getMatrixObject(CPOperand input)`
    `MatrixObject` | ExecutionContext.`getMatrixObject(String varname)`

    Methods in org.apache.sysds.runtime.controlprogram.context that return types with arguments of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `Pair<MatrixObject,Boolean>` | ExecutionContext.`getDenseMatrixOutputForGPUInstruction(String varName, long numRows, long numCols)` Allocates a dense matrix on the GPU (for output)
    `Pair<MatrixObject,Boolean>` | ExecutionContext.`getSparseMatrixOutputForGPUInstruction(String varName, long numRows, long numCols, long nnz)` Allocates a sparse matrix in CSR format on the GPU.

    Methods in org.apache.sysds.runtime.controlprogram.context with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `PartitionedBroadcast<MatrixBlock>` | SparkExecutionContext.`getBroadcastForMatrixObject(MatrixObject mo)`
    `org.apache.spark.api.java.JavaPairRDD<?,?>` | SparkExecutionContext.`getRDDHandleForMatrixObject(MatrixObject mo, Types.FileFormat fmt)`
    `org.apache.spark.api.java.JavaPairRDD<?,?>` | SparkExecutionContext.`getRDDHandleForMatrixObject(MatrixObject mo, Types.FileFormat fmt, int numParts, boolean inclEmpty)`

  - ### Uses of MatrixObject in org.apache.sysds.runtime.controlprogram.paramserv

    Methods in org.apache.sysds.runtime.controlprogram.paramserv that return MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static MatrixObject` | ParamservUtils.`createShallowCopy(MatrixObject mo)`
    `MatrixObject` | PSWorker.`getFeatures()`
    `MatrixObject` | PSWorker.`getLabels()`
    `static MatrixObject` | ParamservUtils.`newMatrixObject(MatrixBlock mb)`
    `static MatrixObject` | ParamservUtils.`newMatrixObject(MatrixBlock mb, boolean cleanup)`
    `static MatrixObject` | ParamservUtils.`sliceMatrix(MatrixObject mo, long rl, long rh)` Slice the matrix

    Methods in org.apache.sysds.runtime.controlprogram.paramserv with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static MatrixObject` | ParamservUtils.`createShallowCopy(MatrixObject mo)`
    `static org.apache.spark.api.java.JavaPairRDD<Integer,scala.Tuple2<MatrixBlock,MatrixBlock>>` | ParamservUtils.`doPartitionOnSpark(SparkExecutionContext sec, MatrixObject features, MatrixObject labels, Statement.PSScheme scheme, int workerNum)`
    `void` | PSWorker.`setFeatures(MatrixObject features)`
    `void` | PSWorker.`setLabels(MatrixObject labels)`
    `static MatrixObject` | ParamservUtils.`sliceMatrix(MatrixObject mo, long rl, long rh)` Slice the matrix

  - ### Uses of MatrixObject in org.apache.sysds.runtime.controlprogram.paramserv.dp

    Fields in org.apache.sysds.runtime.controlprogram.paramserv.dp with type parameters of type MatrixObject
    Modifier and Type | Field and Description
    --- | ---
    `List<MatrixObject>` | DataPartitionLocalScheme.Result.`pFeatures`
    `List<MatrixObject>` | DataPartitionLocalScheme.Result.`pLabels`

    Constructor parameters in org.apache.sysds.runtime.controlprogram.paramserv.dp with type arguments of type MatrixObject
    Constructor and Description
    `Result(List<MatrixObject> pFeatures, List<MatrixObject> pLabels)`
    `Result(List<MatrixObject> pFeatures, List<MatrixObject> pLabels)`

  - ### Uses of MatrixObject in org.apache.sysds.runtime.controlprogram.parfor

    Methods in org.apache.sysds.runtime.controlprogram.parfor that return MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `MatrixObject` | DataPartitioner.`createPartitionedMatrixObject(MatrixObject in, MatrixObject out, boolean force)` Creates a partitioned matrix object based on the given input matrix object, according to the specified split format.
    `MatrixObject` | DataPartitioner.`createPartitionedMatrixObject(MatrixObject in, String fnameNew)`
    `MatrixObject` | DataPartitioner.`createPartitionedMatrixObject(MatrixObject in, String fnameNew, boolean force)`
    `MatrixObject` | ResultMergeRemoteSparkWCompare.`executeParallelMerge(int par)`
    `MatrixObject` | ResultMergeRemoteSpark.`executeParallelMerge(int par)`
    `MatrixObject` | ResultMergeLocalAutomatic.`executeParallelMerge(int par)`
    `abstract MatrixObject` | ResultMerge.`executeParallelMerge(int par)` Merge all given input matrices in parallel into the given output matrix.
    `MatrixObject` | ResultMergeLocalFile.`executeParallelMerge(int par)`
    `MatrixObject` | ResultMergeLocalMemory.`executeParallelMerge(int par)`
    `MatrixObject` | ResultMergeRemoteSparkWCompare.`executeSerialMerge()`
    `MatrixObject` | ResultMergeRemoteSpark.`executeSerialMerge()`
    `MatrixObject` | ResultMergeLocalAutomatic.`executeSerialMerge()`
    `abstract MatrixObject` | ResultMerge.`executeSerialMerge()` Merge all given input matrices sequentially into the given output matrix.
    `MatrixObject` | ResultMergeLocalFile.`executeSerialMerge()`
    `MatrixObject` | ResultMergeLocalMemory.`executeSerialMerge()`

    Methods in org.apache.sysds.runtime.controlprogram.parfor with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `MatrixObject` | DataPartitioner.`createPartitionedMatrixObject(MatrixObject in, MatrixObject out, boolean force)` Creates a partitioned matrix object based on the given input matrix object, according to the specified split format.
    `MatrixObject` | DataPartitioner.`createPartitionedMatrixObject(MatrixObject in, String fnameNew)`
    `MatrixObject` | DataPartitioner.`createPartitionedMatrixObject(MatrixObject in, String fnameNew, boolean force)`
    `static RemoteParForJobReturn` | RemoteDPParForSpark.`runJob(long pfid, String itervar, String matrixvar, String program, HashMap<String,byte[]> clsMap, String resultFile, MatrixObject input, ExecutionContext ec, ParForProgramBlock.PartitionFormat dpf, Types.FileFormat fmt, boolean tSparseCol, boolean enableCPCaching, int numReducers)`

    Constructors in org.apache.sysds.runtime.controlprogram.parfor with parameters of type MatrixObject
    Constructor and Description
    `ResultMerge(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMerge(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMergeLocalAutomatic(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMergeLocalAutomatic(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMergeLocalFile(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMergeLocalFile(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMergeLocalMemory(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMergeLocalMemory(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum)`
    `ResultMergeRemoteSpark(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum, ExecutionContext ec, int numMappers, int numReducers)`
    `ResultMergeRemoteSpark(MatrixObject out, MatrixObject[] in, String outputFilename, boolean accum, ExecutionContext ec, int numMappers, int numReducers)`

  - ### Uses of MatrixObject in org.apache.sysds.runtime.controlprogram.parfor.opt

    Methods in org.apache.sysds.runtime.controlprogram.parfor.opt with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | OptimizerRuleBased.`allowsBinaryCellPartitions(MatrixObject mo, ParForProgramBlock.PartitionFormat dpf)`

  - ### Uses of MatrixObject in org.apache.sysds.runtime.instructions.fed

    Methods in org.apache.sysds.runtime.instructions.fed with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static void` | MultiReturnParameterizedBuiltinFEDInstruction.`encodeFederatedFrames(FederationMap fedMapping, Encoder globalEncoder, MatrixObject transformedMat)`
    `void` | InitFEDInstruction.`federateMatrix(MatrixObject output, List<org.apache.commons.lang3.tuple.Pair<FederatedRange,FederatedData>> workers)`

  - ### Uses of MatrixObject in org.apache.sysds.runtime.instructions.gpu.context

    Methods in org.apache.sysds.runtime.instructions.gpu.context with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `GPUObject` | GPUContext.`createGPUObject(MatrixObject mo)` Instantiates a new `GPUObject` initialized with the given `MatrixObject`.

  - ### Uses of MatrixObject in org.apache.sysds.runtime.matrix.data

    Methods in org.apache.sysds.runtime.matrix.data that return MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static MatrixObject` | LibMatrixCUDA.`getDenseMatrixOutputForGPUInstruction(ExecutionContext ec, String instName, String name, long numRows, long numCols)` Helper method to get the output block (allocated on the GPU) Also records performance information into `Statistics`
    `static MatrixObject` | LibMatrixCuMatMult.`matmult(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject left, MatrixObject right, String outputName, boolean isLeftTransposed, boolean isRightTransposed)` Matrix multiply on GPU Examines sparsity and shapes and routes call to appropriate method from cuBLAS or cuSparse C = op(A) x op(B) The user is expected to call ec.releaseMatrixOutputForGPUInstruction(outputName);

    Methods in org.apache.sysds.runtime.matrix.data with parameters of type MatrixObject
    Modifier and Type | Method and Description
    --- | ---
    `static void` | LibMatrixCUDA.`abs(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "abs" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`acos(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "acos" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`asin(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "asin" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`atan(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "atan" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`axpy(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName, double constant)` Performs daxpy operation
    `static void` | LibMatrixCuDNN.`batchNormalizationBackward(GPUContext gCtx, String instName, MatrixObject image, MatrixObject dout, MatrixObject scale, MatrixObject dX, MatrixObject dScale, MatrixObject dBias, double epsilon, MatrixObject resultSaveMean, MatrixObject resultSaveInvVariance)` This method computes the backpropagation errors for image, scale and bias of batch normalization layer
    `static void` | LibMatrixCuDNN.`batchNormalizationForwardInference(GPUContext gCtx, String instName, MatrixObject image, MatrixObject scale, MatrixObject bias, MatrixObject runningMean, MatrixObject runningVar, MatrixObject ret, double epsilon)` Performs the forward BatchNormalization layer computation for inference
    `static void` | LibMatrixCuDNN.`batchNormalizationForwardTraining(GPUContext gCtx, String instName, MatrixObject image, MatrixObject scale, MatrixObject bias, MatrixObject runningMean, MatrixObject runningVar, MatrixObject ret, MatrixObject retRunningMean, MatrixObject retRunningVar, double epsilon, double exponentialAverageFactor, MatrixObject resultSaveMean, MatrixObject resultSaveInvVariance)` Performs the forward BatchNormalization layer computation for training
    `static void` | LibMatrixCUDA.`biasAdd(GPUContext gCtx, String instName, MatrixObject input, MatrixObject bias, MatrixObject outputBlock)` Performs the operation corresponding to the DML script: ones = matrix(1, rows=1, cols=Hout*Wout) output = input + matrix(bias %*% ones, rows=1, cols=F*Hout*Wout) This operation is often followed by conv2d and hence we have introduced bias_add(input, bias) built-in function
    `static void` | LibMatrixCUDA.`biasMultiply(GPUContext gCtx, String instName, MatrixObject input, MatrixObject bias, MatrixObject outputBlock)` Performs the operation corresponding to the DML script: ones = matrix(1, rows=1, cols=Hout*Wout) output = input * matrix(bias %*% ones, rows=1, cols=F*Hout*Wout) This operation is often followed by conv2d and hence we have introduced bias_add(input, bias) built-in function
    `static void` | LibMatrixCUDA.`cbind(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName)`
    `static void` | LibMatrixCUDA.`ceil(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "ceil" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`channelSums(GPUContext gCtx, String instName, MatrixObject input, MatrixObject outputBlock, long C, long HW)` Perform channel_sums operations: out = rowSums(matrix(colSums(A), rows=C, cols=HW))
    `static void` | LibMatrixCuDNN.`conv2d(GPUContext gCtx, String instName, MatrixObject image, MatrixObject filter, MatrixObject outputBlock, 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, double intermediateMemoryBudget)` Performs a 2D convolution
    `static void` | LibMatrixCuDNN.`conv2dBackwardData(GPUContext gCtx, String instName, MatrixObject filter, MatrixObject dout, MatrixObject output, 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, double intermediateMemoryBudget)` This method computes the backpropogation errors for previous layer of convolution operation
    `static void` | LibMatrixCuDNN.`conv2dBackwardFilter(GPUContext gCtx, String instName, MatrixObject image, MatrixObject dout, MatrixObject outputBlock, 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, double intermediateMemoryBudget)` This method computes the backpropogation errors for filter of convolution operation
    `static void` | LibMatrixCuDNN.`conv2dBiasAdd(GPUContext gCtx, String instName, MatrixObject image, MatrixObject bias, MatrixObject filter, MatrixObject output, 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, double intermediateMemoryBudget)` Does a 2D convolution followed by a bias_add
    `static void` | LibMatrixCUDA.`cos(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "cos" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`cosh(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "cosh" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`cumulativeScan(ExecutionContext ec, GPUContext gCtx, String instName, String kernelFunction, MatrixObject in, String outputName)` Cumulative scan
    `static void` | LibMatrixCUDA.`cumulativeSumProduct(ExecutionContext ec, GPUContext gCtx, String instName, String kernelFunction, MatrixObject in, String outputName)` Cumulative sum-product kernel cascade invokation
    `static void` | LibMatrixCUDA.`exp(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "exp" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`floor(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "floor" operation on a matrix on the GPU
    `static jcuda.Pointer` | LibMatrixCUDA.`getDensePointer(GPUContext gCtx, MatrixObject input, String instName)` Convenience method to get jcudaDenseMatrixPtr.
    `static jcuda.Pointer` | LibMatrixCuDNN.`getDensePointerForCuDNN(GPUContext gCtx, MatrixObject image, String instName, int numRows, int numCols)` Convenience method to get jcudaDenseMatrixPtr.
    `static long` | LibMatrixCUDA.`getNnz(GPUContext gCtx, String instName, MatrixObject mo, boolean recomputeDenseNNZ)` Note: if the matrix is in dense format, it explicitly re-computes the number of nonzeros.
    `static boolean` | LibMatrixCUDA.`isInSparseFormat(GPUContext gCtx, MatrixObject mo)`
    `static void` | LibMatrixCUDA.`log(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "log" operation on a matrix on the GPU
    `static MatrixObject` | LibMatrixCuMatMult.`matmult(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject left, MatrixObject right, String outputName, boolean isLeftTransposed, boolean isRightTransposed)` Matrix multiply on GPU Examines sparsity and shapes and routes call to appropriate method from cuBLAS or cuSparse C = op(A) x op(B) The user is expected to call ec.releaseMatrixOutputForGPUInstruction(outputName);
    `static void` | LibMatrixCUDA.`matmultTSMM(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject left, String outputName, boolean isLeftTransposed)` Performs tsmm, A %*% A' or A' %*% A, on GPU by exploiting cublasDsyrk(...)
    `static void` | LibMatrixCUDA.`matrixMatrixArithmetic(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName, boolean isLeftTransposed, boolean isRightTransposed, BinaryOperator op)` Performs elementwise arithmetic operation specified by op of two input matrices in1 and in2
    `static void` | LibMatrixCUDA.`matrixMatrixRelational(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName, BinaryOperator op)` Performs elementwise operation relational specified by op of two input matrices in1 and in2
    `static void` | LibMatrixCUDA.`matrixScalarArithmetic(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in, String outputName, boolean isInputTransposed, ScalarOperator op)` Entry point to perform elementwise matrix-scalar arithmetic operation specified by op
    `static void` | LibMatrixCUDA.`matrixScalarOp(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in, String outputName, boolean isInputTransposed, ScalarOperator op)` Utility to do matrix-scalar operation kernel
    `static void` | LibMatrixCUDA.`matrixScalarRelational(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in, String outputName, ScalarOperator op)` Entry point to perform elementwise matrix-scalar relational operation specified by op
    `static void` | LibMatrixCuDNN.`pooling(GPUContext gCtx, String instName, MatrixObject image, MatrixObject outputBlock, 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, LibMatrixDNN.PoolingType poolingType, double intermediateMemoryBudget)` performs maxpooling on GPU by exploiting cudnnPoolingForward(...)
    `static void` | LibMatrixCuDNN.`poolingBackward(GPUContext gCtx, String instName, MatrixObject image, MatrixObject dout, MatrixObject maxpoolOutput, MatrixObject outputBlock, 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, LibMatrixDNN.PoolingType poolingType, double intermediateMemoryBudget)` Performs maxpoolingBackward on GPU by exploiting cudnnPoolingBackward(...) This method computes the backpropogation errors for previous layer of maxpooling operation
    `static void` | LibMatrixCUDA.`rbind(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName)`
    `static void` | LibMatrixCuDNN.`relu(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in, String outputName)` Performs the relu operation on the GPU.
    `static void` | LibMatrixCUDA.`reluBackward(GPUContext gCtx, String instName, MatrixObject input, MatrixObject dout, MatrixObject outputBlock)` This method computes the backpropagation errors for previous layer of relu operation
    `static void` | LibMatrixCUDA.`round(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "round" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`sigmoid(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "sigmoid" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`sign(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "sign" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`sin(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "sin" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`sinh(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "sinh" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`sliceOperations(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, IndexRange ixrange, String outputName)` Method to perform rightIndex operation for a given lower and upper bounds in row and column dimensions.
    `static void` | LibMatrixCuDNN.`softmax(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "softmax" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`solve(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName)` Implements the "solve" function for systemds Ax = B (A is of size m*n, B is of size m*1, x is of size n*1)
    `static void` | LibMatrixCUDA.`sqrt(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "sqrt" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`tan(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "tan" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`tanh(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName)` Performs an "tanh" operation on a matrix on the GPU
    `static void` | LibMatrixCUDA.`transpose(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in, String outputName)` Transposes the input matrix using cublasDgeam
    `static void` | LibMatrixCUDA.`unaryAggregate(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String output, AggregateUnaryOperator op)` Entry point to perform Unary aggregate operations on the GPU.

    Constructors in org.apache.sysds.runtime.matrix.data with parameters of type MatrixObject
    Constructor and Description
    `LibMatrixCuDNNInputRowFetcher(GPUContext gCtx, String instName, MatrixObject image)` Initialize the input fetcher

Copyright © 2020 The Apache Software Foundation. All rights reserved.