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()`
`EstimatorBitsetMM(int type)`

## Method Summary

Modifier and Type
Method
Description
`EstimatorBitsetMM.BitsetMatrix`
`createBitset(int m, int n)`
`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.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### EstimatorBitsetMM

public EstimatorBitsetMM()

### EstimatorBitsetMM

public EstimatorBitsetMM(int type)

## Method Details

### 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 class `SparsityEstimator`
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 class `SparsityEstimator`
Parameters:
  `m1` - left-hand-side operand
  `m2` - 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 class `SparsityEstimator`
Parameters:
  `m1` - left-hand-side operand
  `m2` - right-hand-side operand
  `op` - 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 class `SparsityEstimator`
Parameters:
  `m` - left-hand-side operand
  `op` - operator code
Returns:
  sparsity

### createBitset

public EstimatorBitsetMM.BitsetMatrix createBitset(int m, int n)

### createBitset

public EstimatorBitsetMM.BitsetMatrix createBitset(MatrixBlock in)