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 2016/02/03 22:59:43 UTC
[1/2] incubator-systemml git commit: Fix robustness datagenop
rewrites / ipa (operation-specific checks)
Repository: incubator-systemml
Updated Branches:
refs/heads/master 310d65c73 -> 6d05ab6d6
Fix robustness datagenop rewrites / ipa (operation-specific checks)
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/428fcda6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/428fcda6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/428fcda6
Branch: refs/heads/master
Commit: 428fcda6eca3360c063c980655d9049fb523b9be
Parents: 310d65c
Author: Matthias Boehm <mb...@us.ibm.com>
Authored: Tue Feb 2 16:33:43 2016 -0800
Committer: Matthias Boehm <mb...@us.ibm.com>
Committed: Wed Feb 3 13:59:16 2016 -0800
----------------------------------------------------------------------
.../java/org/apache/sysml/hops/DataGenOp.java | 22 +++++++-------------
.../sysml/hops/ipa/InterProceduralAnalysis.java | 3 ++-
.../RewriteAlgebraicSimplificationDynamic.java | 4 +++-
3 files changed, 12 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/428fcda6/src/main/java/org/apache/sysml/hops/DataGenOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/DataGenOp.java b/src/main/java/org/apache/sysml/hops/DataGenOp.java
index 7432fc2..c8d7fc4 100644
--- a/src/main/java/org/apache/sysml/hops/DataGenOp.java
+++ b/src/main/java/org/apache/sysml/hops/DataGenOp.java
@@ -377,8 +377,8 @@ public class DataGenOp extends Hop implements MultiThreadedHop
*/
public boolean hasConstantValue()
{
- //string initialization does not exhibit constant values
- if( _op == DataGenMethod.SINIT )
+ //robustness for other operations, not specifying min/max/sparsity
+ if( _op != DataGenMethod.RAND )
return false;
Hop min = getInput().get(_paramIndexMap.get(DataExpression.RAND_MIN)); //min
@@ -386,28 +386,20 @@ public class DataGenOp extends Hop implements MultiThreadedHop
Hop sparsity = getInput().get(_paramIndexMap.get(DataExpression.RAND_SPARSITY)); //sparsity
//literal value comparison
- if( min instanceof LiteralOp && max instanceof LiteralOp && sparsity instanceof LiteralOp){
- try{
+ if( min instanceof LiteralOp && max instanceof LiteralOp && sparsity instanceof LiteralOp) {
+ try {
double minVal = HopRewriteUtils.getDoubleValue((LiteralOp)min);
double maxVal = HopRewriteUtils.getDoubleValue((LiteralOp)max);
double sp = HopRewriteUtils.getDoubleValue((LiteralOp)sparsity);
return (sp==1.0 && minVal == maxVal);
}
- catch(Exception ex)
- {
+ catch(Exception ex) {
return false;
}
}
//reference comparison (based on common subexpression elimination)
else if ( min == max && sparsity instanceof LiteralOp ) {
- try {
- double sp = HopRewriteUtils.getDoubleValue((LiteralOp)sparsity);
- return (sp==1.0);
- }
- catch(Exception ex)
- {
- return false;
- }
+ return (HopRewriteUtils.getDoubleValueSafe((LiteralOp)sparsity)==1);
}
return false;
@@ -421,7 +413,7 @@ public class DataGenOp extends Hop implements MultiThreadedHop
public boolean hasConstantValue(double val)
{
//string initialization does not exhibit constant values
- if( _op == DataGenMethod.SINIT )
+ if( _op != DataGenMethod.RAND )
return false;
boolean ret = false;
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/428fcda6/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
index 8c6fe81..a7b4776 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
@@ -31,13 +31,13 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
-
import org.apache.sysml.hops.BinaryOp;
import org.apache.sysml.hops.DataGenOp;
import org.apache.sysml.hops.DataOp;
import org.apache.sysml.hops.FunctionOp;
import org.apache.sysml.hops.FunctionOp.FunctionType;
import org.apache.sysml.hops.Hop;
+import org.apache.sysml.hops.Hop.DataGenMethod;
import org.apache.sysml.hops.Hop.DataOpTypes;
import org.apache.sysml.hops.Hop.OpOp2;
import org.apache.sysml.hops.HopsException;
@@ -1169,6 +1169,7 @@ public class InterProceduralAnalysis
for( Hop root : roots )
if( root instanceof DataOp && ((DataOp)root).getDataOpType()==DataOpTypes.TRANSIENTWRITE
&& root.getInput().get(0) instanceof DataGenOp
+ && ((DataGenOp)root.getInput().get(0)).getOp()==DataGenMethod.RAND
&& ((DataGenOp)root.getInput().get(0)).hasConstantValue(1.0))
{
mOnes.put(root.getName(),root.getInput().get(0));
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/428fcda6/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
index 918b671..68f3a30 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
@@ -461,6 +461,7 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule
//check for column replication
if( right instanceof AggBinaryOp //matrix mult with datagen
&& right.getInput().get(1) instanceof DataGenOp
+ && ((DataGenOp)right.getInput().get(1)).getOp()==DataGenMethod.RAND
&& ((DataGenOp)right.getInput().get(1)).hasConstantValue(1d)
&& right.getInput().get(1).getDim1() == 1 //row vector for replication
&& right.getInput().get(0).getDim2() == 1 ) //column vector for mv binary
@@ -1064,7 +1065,8 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule
// X %*% y -> X
if( HopRewriteUtils.isDimsKnown(right) && right.getDim1()==1 && right.getDim2()==1 && //scalar right
- right instanceof DataGenOp && ((DataGenOp)right).hasConstantValue(1.0)) //matrix(1,)
+ right instanceof DataGenOp && ((DataGenOp)right).getOp()==DataGenMethod.RAND
+ && ((DataGenOp)right).hasConstantValue(1.0)) //matrix(1,)
{
HopRewriteUtils.removeChildReference(parent, hi);
HopRewriteUtils.addChildReference(parent, left, pos);
[2/2] incubator-systemml git commit: Fix simplification rewrite
'remove unnecessary reorg' (op equivalence)
Posted by mb...@apache.org.
Fix simplification rewrite 'remove unnecessary reorg' (op equivalence)
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/6d05ab6d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/6d05ab6d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/6d05ab6d
Branch: refs/heads/master
Commit: 6d05ab6d6bdc8d7d78f4608c18f0bf9bc9205fd5
Parents: 428fcda
Author: Matthias Boehm <mb...@us.ibm.com>
Authored: Tue Feb 2 17:15:22 2016 -0800
Committer: Matthias Boehm <mb...@us.ibm.com>
Committed: Wed Feb 3 13:59:23 2016 -0800
----------------------------------------------------------------------
.../sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6d05ab6d/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
index 2368153..77b2e5e 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
@@ -1378,8 +1378,9 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule
if( hi instanceof ReorgOp && HopRewriteUtils.isValidOp(((ReorgOp)hi).getOp(), lookup) ) //first reorg
{
+ ReOrgOp firstOp = ((ReorgOp)hi).getOp();
Hop hi2 = hi.getInput().get(0);
- if( hi2 instanceof ReorgOp && HopRewriteUtils.isValidOp(((ReorgOp)hi2).getOp(), lookup) ) //second reorg
+ if( hi2 instanceof ReorgOp && ((ReorgOp)hi2).getOp()==firstOp ) //second reorg w/ same type
{
Hop hi3 = hi2.getInput().get(0);
//remove unnecessary chain of t(t())