Repository: systemml
Updated Branches:
  refs/heads/master 5ed2c30e6 -> ca615ca10


[SYSTEMML-2222] Improved empty block filtering for spark operations

This patch improves the analysis of safe empty block filtering for spark
operations during hop compilation. We now handle mixed chains of matrix
multiply and reorg operations. 


Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/80023787
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/80023787
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/80023787

Branch: refs/heads/master
Commit: 80023787e9a4299468759c1a2a2e37fc6dd58054
Parents: 5ed2c30
Author: Matthias Boehm <mboe...@gmail.com>
Authored: Fri Apr 13 14:10:23 2018 -0700
Committer: Matthias Boehm <mboe...@gmail.com>
Committed: Fri Apr 13 14:10:23 2018 -0700

----------------------------------------------------------------------
 .../java/org/apache/sysml/hops/OptimizerUtils.java     | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/80023787/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/OptimizerUtils.java 
b/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
index 3156afd..5ae20eb 100644
--- a/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
+++ b/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
@@ -33,6 +33,7 @@ import org.apache.sysml.conf.DMLConfig;
 import org.apache.sysml.hops.Hop.DataOpTypes;
 import org.apache.sysml.hops.Hop.FileFormatTypes;
 import org.apache.sysml.hops.Hop.OpOp2;
+import org.apache.sysml.hops.Hop.ReOrgOp;
 import org.apache.sysml.hops.rewrite.HopRewriteUtils;
 import org.apache.sysml.lops.Checkpoint;
 import org.apache.sysml.lops.Lop;
@@ -922,13 +923,13 @@ public class OptimizerUtils
                boolean ret = true;
                for( Hop p : hop.getParent() ) {
                        p.optFindExecType(); //ensure exec type evaluated
-                       ret &=   (  p.getExecType()==ExecType.CP 
-                                        ||(p instanceof AggBinaryOp && 
allowsToFilterEmptyBlockOutputs(p) )
-                                        ||(p instanceof DataOp && 
((DataOp)p).getDataOpType()==DataOpTypes.PERSISTENTWRITE && 
((DataOp)p).getInputFormatType()==FileFormatTypes.TEXT))
-                                 && !(p instanceof FunctionOp || (p instanceof 
DataOp && ((DataOp)p).getInputFormatType()!=FileFormatTypes.TEXT) ); //no 
function call or transient write
+                       ret &= ( p.getExecType()==ExecType.CP 
+                               ||(p instanceof AggBinaryOp && 
allowsToFilterEmptyBlockOutputs(p) )
+                               ||(HopRewriteUtils.isReorg(p, ReOrgOp.RESHAPE, 
ReOrgOp.TRANS) && allowsToFilterEmptyBlockOutputs(p) )
+                               ||(HopRewriteUtils.isData(p, 
DataOpTypes.PERSISTENTWRITE) && 
((DataOp)p).getInputFormatType()==FileFormatTypes.TEXT))
+                               && !(p instanceof FunctionOp || (p instanceof 
DataOp && ((DataOp)p).getInputFormatType()!=FileFormatTypes.TEXT) ); //no 
function call or transient write
                }
-                       
-               return ret;     
+               return ret;
        }
 
        public static int getConstrainedNumThreads(int maxNumThreads)

Reply via email to