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())