Class LibMatrixBincell
- java.lang.Object
-
- org.apache.sysds.runtime.matrix.data.LibMatrixBincell
-
public class LibMatrixBincell extends Object
Library for binary cellwise operations (incl arithmetic, relational, etc). Currently, we don't have dedicated support for the individual operations but for categories of operations and combinations of dense/sparse and MM/MV. Safe/unsafe refer to sparse-safe and sparse-unsafe operations.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LibMatrixBincell.BinaryAccessType
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
bincellOp(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op)
matrix-matrix binary operations, MM, MVstatic void
bincellOp(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op, int k)
static void
bincellOp(MatrixBlock m1, MatrixBlock ret, ScalarOperator op)
matrix-scalar, scalar-matrix binary operations.static void
bincellOp(MatrixBlock m1, MatrixBlock ret, ScalarOperator op, int k)
static MatrixBlock
bincellOpInPlace(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)
NOTE: operations in place always require m1 and m2 to be of equal dimensions defaults to right side operations, updating the m1 matrix with like: m1ret op m2static MatrixBlock
bincellOpInPlaceLeft(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)
Left side operations, updating the m1 matrix like: m2 op m1retstatic MatrixBlock
bincellOpInPlaceRight(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)
Right side operations, updating the m1 matrix like: m1ret op m2static LibMatrixBincell.BinaryAccessType
getBinaryAccessType(MatrixBlock m1, MatrixBlock m2)
static LibMatrixBincell.BinaryAccessType
getBinaryAccessTypeExtended(MatrixBlock m1, MatrixBlock m2)
static boolean
isAllDense(MatrixBlock... mb)
static boolean
isSparseSafeDivide(BinaryOperator op, MatrixBlock rhs)
static void
isValidDimensionsBinary(MatrixBlock m1, MatrixBlock m2)
static void
isValidDimensionsBinaryExtended(MatrixBlock m1, MatrixBlock m2)
-
-
-
Method Detail
-
bincellOp
public static void bincellOp(MatrixBlock m1, MatrixBlock ret, ScalarOperator op)
matrix-scalar, scalar-matrix binary operations.- Parameters:
m1
- input matrixret
- result matrixop
- scalar operator
-
bincellOp
public static void bincellOp(MatrixBlock m1, MatrixBlock ret, ScalarOperator op, int k)
-
bincellOp
public static void bincellOp(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op)
matrix-matrix binary operations, MM, MV- Parameters:
m1
- input matrix 1m2
- input matrix 2ret
- result matrixop
- binary operator
-
bincellOp
public static void bincellOp(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op, int k)
-
bincellOpInPlace
public static MatrixBlock bincellOpInPlace(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)
NOTE: operations in place always require m1 and m2 to be of equal dimensions defaults to right side operations, updating the m1 matrix with like: m1ret op m2- Parameters:
m1ret
- result matrix updated in placem2
- matrix block the other matrix to take values fromop
- binary operator the operator that is placed in the middle of m1ret and m2- Returns:
- The same pointer to m1ret argument, and the updated result.
-
bincellOpInPlaceRight
public static MatrixBlock bincellOpInPlaceRight(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)
Right side operations, updating the m1 matrix like: m1ret op m2- Parameters:
m1ret
- result matrix updated in placem2
- matrix block the other matrix to take values fromop
- binary operator the operator that is placed in the middle of m1ret and m2- Returns:
- The result MatrixBlock (same object pointer to m1ret argument)
-
bincellOpInPlaceLeft
public static MatrixBlock bincellOpInPlaceLeft(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)
Left side operations, updating the m1 matrix like: m2 op m1ret- Parameters:
m1ret
- result matrix updated in placem2
- matrix block the other matrix to take values fromop
- binary operator the operator that is placed in the middle of m1ret and m2- Returns:
- The result MatrixBlock (same object pointer to m1ret argument)
-
getBinaryAccessType
public static LibMatrixBincell.BinaryAccessType getBinaryAccessType(MatrixBlock m1, MatrixBlock m2)
-
getBinaryAccessTypeExtended
public static LibMatrixBincell.BinaryAccessType getBinaryAccessTypeExtended(MatrixBlock m1, MatrixBlock m2)
-
isValidDimensionsBinary
public static void isValidDimensionsBinary(MatrixBlock m1, MatrixBlock m2)
-
isValidDimensionsBinaryExtended
public static void isValidDimensionsBinaryExtended(MatrixBlock m1, MatrixBlock m2)
-
isSparseSafeDivide
public static boolean isSparseSafeDivide(BinaryOperator op, MatrixBlock rhs)
-
isAllDense
public static boolean isAllDense(MatrixBlock... mb)
-
-