Package org.apache.sysds.hops.estim
Class EstimatorBitsetMM
- java.lang.Object
-
- org.apache.sysds.hops.estim.SparsityEstimator
-
- org.apache.sysds.hops.estim.EstimatorBitsetMM
-
public class EstimatorBitsetMM extends SparsityEstimator
This estimator implements a naive but rather common approach of boolean matrix multiplies which allows to infer the exact non-zero structure and thus is also useful for sparse result preallocation. For example, the following paper indicates that this approach is used for sparse spGEMM in NVIDIA cuSPARSE and Intel MKL: Weifeng Liu and Brian Vinter. An Efficient GPU General Sparse Matrix-Matrix Multiplication for Irregular Data. In IPDPS, pages 370–381, 2014.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
EstimatorBitsetMM.BitsetMatrix
static class
EstimatorBitsetMM.BitsetMatrix1
This class represents a boolean matrix and provides key operations.static class
EstimatorBitsetMM.BitsetMatrix2
-
Nested classes/interfaces inherited from class org.apache.sysds.hops.estim.SparsityEstimator
SparsityEstimator.OpCode
-
-
Field Summary
-
Fields inherited from class org.apache.sysds.hops.estim.SparsityEstimator
MIN_PAR_THRESHOLD, MULTI_THREADED_BUILD, MULTI_THREADED_ESTIM
-
-
Constructor Summary
Constructors Constructor Description EstimatorBitsetMM()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static EstimatorBitsetMM.BitsetMatrix
createBitset(int m, int n)
static EstimatorBitsetMM.BitsetMatrix
createBitset(MatrixBlock in)
DataCharacteristics
estim(MMNode root)
Estimates the output sparsity of a DAG of matrix multiplications for the given operator graph of a single root node.double
estim(MatrixBlock m, SparsityEstimator.OpCode op)
Estimates the output sparsity for a given unary operation.double
estim(MatrixBlock m1, MatrixBlock m2)
Estimates the output sparsity for a single matrix multiplication.double
estim(MatrixBlock m1, MatrixBlock m2, SparsityEstimator.OpCode op)
Estimates the output sparsity for a given binary operation.
-
-
-
Method Detail
-
estim
public DataCharacteristics estim(MMNode root)
Description copied from class:SparsityEstimator
Estimates the output sparsity of a DAG of matrix multiplications for the given operator graph of a single root node.- Specified by:
estim
in classSparsityEstimator
- Parameters:
root
- DAG root node- Returns:
- output data characteristics
-
estim
public double estim(MatrixBlock m1, MatrixBlock m2)
Description copied from class:SparsityEstimator
Estimates the output sparsity for a single matrix multiplication.- Specified by:
estim
in classSparsityEstimator
- Parameters:
m1
- left-hand-side operandm2
- right-hand-side operand- Returns:
- sparsity
-
estim
public double estim(MatrixBlock m1, MatrixBlock m2, SparsityEstimator.OpCode op)
Description copied from class:SparsityEstimator
Estimates the output sparsity for a given binary operation.- Specified by:
estim
in classSparsityEstimator
- Parameters:
m1
- left-hand-side operandm2
- right-hand-side operandop
- operator code- Returns:
- sparsity
-
estim
public double estim(MatrixBlock m, SparsityEstimator.OpCode op)
Description copied from class:SparsityEstimator
Estimates the output sparsity for a given unary operation.- Specified by:
estim
in classSparsityEstimator
- Parameters:
m
- left-hand-side operandop
- operator code- Returns:
- sparsity
-
createBitset
public static EstimatorBitsetMM.BitsetMatrix createBitset(int m, int n)
-
createBitset
public static EstimatorBitsetMM.BitsetMatrix createBitset(MatrixBlock in)
-
-