You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2018/10/22 21:00:24 UTC
systemml git commit: [SYSTEMML-2479] Fix and cleanup baseline
estimators for chains of ops
Repository: systemml
Updated Branches:
refs/heads/master 73e1e40d7 -> 17821d105
[SYSTEMML-2479] Fix and cleanup baseline estimators for chains of ops
Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/17821d10
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/17821d10
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/17821d10
Branch: refs/heads/master
Commit: 17821d10543c4373b4728068d1b79bdf9346a38f
Parents: 73e1e40
Author: Matthias Boehm <mb...@gmail.com>
Authored: Mon Oct 22 23:00:03 2018 +0200
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Mon Oct 22 23:00:10 2018 +0200
----------------------------------------------------------------------
.../apache/sysml/hops/estim/EstimatorBasicAvg.java | 5 +++--
.../apache/sysml/hops/estim/EstimatorBasicWorst.java | 9 +++++++--
.../apache/sysml/hops/estim/EstimatorBitsetMM.java | 9 +++------
.../apache/sysml/hops/estim/EstimatorDensityMap.java | 15 ++++++---------
.../sysml/hops/estim/EstimatorMatrixHistogram.java | 2 +-
.../java/org/apache/sysml/hops/estim/MMNode.java | 8 ++++++++
.../apache/sysml/hops/estim/SparsityEstimator.java | 7 +++++++
7 files changed, 35 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/systemml/blob/17821d10/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicAvg.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicAvg.java b/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicAvg.java
index 10ff0f7..a84ac8c 100644
--- a/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicAvg.java
+++ b/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicAvg.java
@@ -34,8 +34,9 @@ public class EstimatorBasicAvg extends SparsityEstimator
public MatrixCharacteristics estim(MMNode root) {
MatrixCharacteristics mc1 = !root.getLeft().isLeaf() ?
estim(root.getLeft()) : root.getLeft().getMatrixCharacteristics();
- MatrixCharacteristics mc2 = !root.getRight().isLeaf() ?
- estim(root.getRight()) : root.getRight().getMatrixCharacteristics();
+ MatrixCharacteristics mc2 = root.getRight()==null ? null :
+ !root.getRight().isLeaf() ? estim(root.getRight()) :
+ root.getRight().getMatrixCharacteristics();
return root.setMatrixCharacteristics(
estimIntern(mc1, mc2, root.getOp()));
}
http://git-wip-us.apache.org/repos/asf/systemml/blob/17821d10/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicWorst.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicWorst.java b/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicWorst.java
index 81877dd..777b486 100644
--- a/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicWorst.java
+++ b/src/main/java/org/apache/sysml/hops/estim/EstimatorBasicWorst.java
@@ -36,10 +36,15 @@ public class EstimatorBasicWorst extends SparsityEstimator
{
@Override
public MatrixCharacteristics estim(MMNode root) {
+ if (!root.getLeft().isLeaf())
+ estim(root.getLeft()); // obtain synopsis
+ if (root.getRight()!=null && !root.getRight().isLeaf())
+ estim(root.getRight()); // obtain synopsis
MatrixCharacteristics mc1 = !root.getLeft().isLeaf() ?
estim(root.getLeft()) : root.getLeft().getMatrixCharacteristics();
- MatrixCharacteristics mc2 = !root.getRight().isLeaf() ?
- estim(root.getRight()) : root.getRight().getMatrixCharacteristics();
+ MatrixCharacteristics mc2 = root.getRight()==null ? null :
+ !root.getRight().isLeaf() ? estim(root.getRight()) :
+ root.getRight().getMatrixCharacteristics();
return root.setMatrixCharacteristics(
estimIntern(mc1, mc2, root.getOp()));
}
http://git-wip-us.apache.org/repos/asf/systemml/blob/17821d10/src/main/java/org/apache/sysml/hops/estim/EstimatorBitsetMM.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/estim/EstimatorBitsetMM.java b/src/main/java/org/apache/sysml/hops/estim/EstimatorBitsetMM.java
index 3d3c4f0..07d4cdc 100644
--- a/src/main/java/org/apache/sysml/hops/estim/EstimatorBitsetMM.java
+++ b/src/main/java/org/apache/sysml/hops/estim/EstimatorBitsetMM.java
@@ -46,14 +46,11 @@ public class EstimatorBitsetMM extends SparsityEstimator
{
@Override
public MatrixCharacteristics estim(MMNode root) {
- // recursive density map computation of non-leaf nodes
- if (!root.getLeft().isLeaf())
- estim(root.getLeft()); // obtain synopsis
- if (!root.getRight().isLeaf())
- estim(root.getRight()); // obtain synopsis
+ estimateInputs(root);
BitsetMatrix m1Map = !root.getLeft().isLeaf() ? (BitsetMatrix) root.getLeft().getSynopsis() :
new BitsetMatrix1(root.getLeft().getData());
- BitsetMatrix m2Map = !root.getRight().isLeaf() ? (BitsetMatrix) root.getRight().getSynopsis() :
+ BitsetMatrix m2Map = root.getRight() == null ? null :
+ !root.getRight().isLeaf() ? (BitsetMatrix) root.getRight().getSynopsis() :
new BitsetMatrix1(root.getRight().getData());
BitsetMatrix outMap = estimInternal(m1Map, m2Map, root.getOp());
root.setSynopsis(outMap); // memorize boolean matrix
http://git-wip-us.apache.org/repos/asf/systemml/blob/17821d10/src/main/java/org/apache/sysml/hops/estim/EstimatorDensityMap.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/estim/EstimatorDensityMap.java b/src/main/java/org/apache/sysml/hops/estim/EstimatorDensityMap.java
index e845a5b..e513937 100644
--- a/src/main/java/org/apache/sysml/hops/estim/EstimatorDensityMap.java
+++ b/src/main/java/org/apache/sysml/hops/estim/EstimatorDensityMap.java
@@ -55,15 +55,12 @@ public class EstimatorDensityMap extends SparsityEstimator
@Override
public MatrixCharacteristics estim(MMNode root) {
- //recursive density map computation of non-leaf nodes
- if( !root.getLeft().isLeaf() )
- estim(root.getLeft()); //obtain synopsis
- if( !root.getRight().isLeaf() )
- estim(root.getRight()); //obtain synopsis
+ estimateInputs(root);
DensityMap m1Map = !root.getLeft().isLeaf() ?
(DensityMap)root.getLeft().getSynopsis() :
new DensityMap(root.getLeft().getData(), _b);
- DensityMap m2Map = !root.getRight().isLeaf() ?
+ DensityMap m2Map = root.getRight()==null ? null:
+ !root.getRight().isLeaf() ?
(DensityMap)root.getRight().getSynopsis() :
new DensityMap(root.getRight().getData(), _b);
@@ -71,7 +68,7 @@ public class EstimatorDensityMap extends SparsityEstimator
DensityMap outMap = estimIntern(m1Map, m2Map, root.getOp());
root.setSynopsis(outMap); //memoize density map
return root.setMatrixCharacteristics(new MatrixCharacteristics(
- root.getLeft().getRows(), root.getRight().getCols(), outMap.getNonZeros()));
+ outMap.getNumRowsOrig(), outMap.getNumColumnsOrig(), outMap.getNonZeros()));
}
@Override
@@ -230,7 +227,7 @@ public class EstimatorDensityMap extends SparsityEstimator
_map = init(in);
_scaled = false;
if( !isPow2(_b) )
- throw new RuntimeException("Invalid block size: "+_b);
+ System.out.println("WARN: Invalid block size: "+_b);
}
public DensityMap(MatrixBlock map, int rlenOrig, int clenOrig, int b, boolean scaled) {
@@ -240,7 +237,7 @@ public class EstimatorDensityMap extends SparsityEstimator
_map = map;
_scaled = scaled;
if( !isPow2(_b) )
- throw new RuntimeException("Invalid block size: "+_b);
+ System.out.println("WARN: Invalid block size: "+_b);
}
public MatrixBlock getMap() {
http://git-wip-us.apache.org/repos/asf/systemml/blob/17821d10/src/main/java/org/apache/sysml/hops/estim/EstimatorMatrixHistogram.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/estim/EstimatorMatrixHistogram.java b/src/main/java/org/apache/sysml/hops/estim/EstimatorMatrixHistogram.java
index 34f9cac..22ff341 100644
--- a/src/main/java/org/apache/sysml/hops/estim/EstimatorMatrixHistogram.java
+++ b/src/main/java/org/apache/sysml/hops/estim/EstimatorMatrixHistogram.java
@@ -59,7 +59,7 @@ public class EstimatorMatrixHistogram extends SparsityEstimator
}
private MatrixCharacteristics estim(MMNode root, boolean topLevel) {
- //recursive histogram computation of non-leaf nodes
+ //NOTE: not estimateInputs due to handling of topLevel
if( !root.getLeft().isLeaf() )
estim(root.getLeft(), false); //obtain synopsis
if( root.getRight()!=null && !root.getRight().isLeaf() )
http://git-wip-us.apache.org/repos/asf/systemml/blob/17821d10/src/main/java/org/apache/sysml/hops/estim/MMNode.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/estim/MMNode.java b/src/main/java/org/apache/sysml/hops/estim/MMNode.java
index d508f82..12b1bce 100644
--- a/src/main/java/org/apache/sysml/hops/estim/MMNode.java
+++ b/src/main/java/org/apache/sysml/hops/estim/MMNode.java
@@ -68,6 +68,14 @@ public class MMNode
this(left, null, op, misc);
}
+ public void reset() {
+ if( _m1 != null )
+ _m1.reset();
+ if( _m2 != null )
+ _m2.reset();
+ _synops = null;
+ }
+
public int getRows() {
return (int)_mc.getRows();
}
http://git-wip-us.apache.org/repos/asf/systemml/blob/17821d10/src/main/java/org/apache/sysml/hops/estim/SparsityEstimator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/estim/SparsityEstimator.java b/src/main/java/org/apache/sysml/hops/estim/SparsityEstimator.java
index 2941959..45ed227 100644
--- a/src/main/java/org/apache/sysml/hops/estim/SparsityEstimator.java
+++ b/src/main/java/org/apache/sysml/hops/estim/SparsityEstimator.java
@@ -114,4 +114,11 @@ public abstract class SparsityEstimator
throw new HopsException("Opcode is not an exact meta data operation: "+op.name());
}
}
+
+ protected void estimateInputs(MMNode root) {
+ if (!root.getLeft().isLeaf())
+ estim(root.getLeft()); // obtain synopsis
+ if (root.getRight()!=null && !root.getRight().isLeaf())
+ estim(root.getRight()); // obtain synopsis
+ }
}