## Uses of Class
org.apache.sysds.runtime.instructions.gpu.context.CSRPointer

- Packages that use CSRPointer
  Package | Description
  --- | ---
  org.apache.sysds.runtime.controlprogram.context |
  org.apache.sysds.runtime.instructions.gpu.context |

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

    Methods in org.apache.sysds.runtime.controlprogram.context that return CSRPointer
    Modifier and Type | Method | Description
    --- | --- | ---
    `CSRPointer` | ExecutionContext.`getGPUSparsePointerAddress​(MatrixObject obj)` |

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

    Methods in org.apache.sysds.runtime.instructions.gpu.context that return CSRPointer
    Modifier and Type | Method | Description
    --- | --- | ---
    `static CSRPointer` | CSRPointer.`allocateEmpty​(GPUContext gCtx, long nnz2, long rows)` |
    `static CSRPointer` | CSRPointer.`allocateEmpty​(GPUContext gCtx, long nnz2, long rows, boolean initialize)` | Factory method to allocate an empty CSR Sparse matrix on the GPU
    `static CSRPointer` | CSRPointer.`allocateForDgeam​(GPUContext gCtx, jcuda.jcusparse.cusparseHandle handle, CSRPointer A, CSRPointer B, int m, int n)` | Estimates the number of non zero elements from the results of a sparse cusparseDgeam operation C = a op(A) + b op(B)
    `static CSRPointer` | CSRPointer.`allocateForMatrixMultiply​(GPUContext gCtx, jcuda.jcusparse.cusparseHandle handle, CSRPointer A, int transA, CSRPointer B, int transB, int m, int n, int k)` | Estimates the number of non-zero elements from the result of a sparse matrix multiplication C = A * B and returns the `CSRPointer` to C with the appropriate GPU memory.
    `CSRPointer` | CSRPointer.`clone​(int rows)` |
    `static CSRPointer` | GPUObject.`columnMajorDenseToRowMajorSparse​(GPUContext gCtx, jcuda.jcusparse.cusparseHandle cusparseHandle, jcuda.Pointer densePtr, int rows, int cols)` | Convenience method to convert a CSR matrix to a dense matrix on the GPU Since the allocated matrix is temporary, bookkeeping is not updated.
    `CSRPointer` | GPUObject.`getJcudaSparseMatrixPtr()` | Pointer to sparse matrix
    `CSRPointer` | GPUObject.`getSparseMatrixCudaPointer()` | Convenience method to directly examine the Sparse matrix on GPU

    Methods in org.apache.sysds.runtime.instructions.gpu.context with parameters of type CSRPointer
    Modifier and Type | Method | Description
    --- | --- | ---
    `static CSRPointer` | CSRPointer.`allocateForDgeam​(GPUContext gCtx, jcuda.jcusparse.cusparseHandle handle, CSRPointer A, CSRPointer B, int m, int n)` | Estimates the number of non zero elements from the results of a sparse cusparseDgeam operation C = a op(A) + b op(B)
    `static CSRPointer` | CSRPointer.`allocateForMatrixMultiply​(GPUContext gCtx, jcuda.jcusparse.cusparseHandle handle, CSRPointer A, int transA, CSRPointer B, int transB, int m, int n, int k)` | Estimates the number of non-zero elements from the result of a sparse matrix multiplication C = A * B and returns the `CSRPointer` to C with the appropriate GPU memory.
    `static void` | CSRPointer.`copyPtrToHost​(CSRPointer src, int rows, long nnz, int[] rowPtr, int[] colInd)` | Static method to copy a CSR sparse matrix from Device to host
    `static void` | CSRPointer.`copyToDevice​(GPUContext gCtx, CSRPointer dest, int rows, long nnz, int[] rowPtr, int[] colInd, double[] values)` | Static method to copy a CSR sparse matrix from Host to Device
    `void` | GPUObject.`setSparseMatrixCudaPointer​(CSRPointer sparseMatrixPtr)` | Convenience method to directly set the sparse matrix on GPU Needed for operations like cusparseDcsrgemm(cusparseHandle, int, int, int, int, int, cusparseMatDescr, int, Pointer, Pointer, Pointer, cusparseMatDescr, int, Pointer, Pointer, Pointer, cusparseMatDescr, Pointer, Pointer, Pointer)