Repository: systemml
Updated Branches:
  refs/heads/master b9f720256 -> 4f1223a9a


[MINOR] Improved recompilation of size expressions and checkpoints

This patch improves the recompilation of size expressions with
floor/ceil functions as well as the recompilation of checkpoints in
parfor body programs. For example, for the nn testsuite, this reduced
the number of (unnecessarily) executed spark instructions from 62 to 0.
 

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

Branch: refs/heads/master
Commit: 4f1223a9a4193a036de1a9d0e7891d0aa5eb11cc
Parents: b9f7202
Author: Matthias Boehm <[email protected]>
Authored: Sun Jan 14 15:59:05 2018 -0800
Committer: Matthias Boehm <[email protected]>
Committed: Sun Jan 14 15:59:05 2018 -0800

----------------------------------------------------------------------
 src/main/java/org/apache/sysml/hops/Hop.java                 | 4 +++-
 src/main/java/org/apache/sysml/hops/OptimizerUtils.java      | 8 ++++++--
 .../test/integration/functions/codegenalg/ZPackageSuite.java | 1 +
 3 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/4f1223a9/src/main/java/org/apache/sysml/hops/Hop.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/Hop.java 
b/src/main/java/org/apache/sysml/hops/Hop.java
index 0f11175..a23008e 100644
--- a/src/main/java/org/apache/sysml/hops/Hop.java
+++ b/src/main/java/org/apache/sysml/hops/Hop.java
@@ -956,8 +956,10 @@ public abstract class Hop implements ParseInfo
                
                //reset recompile flag
                if( (et == null || getExecType() == et || getExecType() == null)
-                       && (reset==ResetType.RESET || 
(reset==ResetType.RESET_KNOWN_DIMS && dimsKnown())) )
+                       && (reset==ResetType.RESET || 
(reset==ResetType.RESET_KNOWN_DIMS && dimsKnown()))
+                       && !(_requiresCheckpoint && getLops() instanceof 
Checkpoint && !dimsKnown(true)) ) {
                        _requiresRecompile = false;
+               }
                
                setVisited();
        }

http://git-wip-us.apache.org/repos/asf/systemml/blob/4f1223a9/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 d978500..eba4dd7 100644
--- a/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
+++ b/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
@@ -1294,8 +1294,10 @@ public class OptimizerUtils
                        {
                                switch( uroot.getOp() )
                                {
-                                       case SQRT:      ret = Math.sqrt(lval); 
break;
+                                       case SQRT:  ret = Math.sqrt(lval); 
break;
                                        case ROUND: ret = Math.round(lval); 
break;
+                                       case CEIL:  ret = Math.ceil(lval); 
break;
+                                       case FLOOR: ret = Math.floor(lval); 
break;
                                        case CAST_AS_BOOLEAN: ret = (lval!=0)? 
1 : 0; break;
                                        case CAST_AS_INT: ret = 
UtilFunctions.toLong(lval); break;
                                        case CAST_AS_DOUBLE: ret = lval; break;
@@ -1331,8 +1333,10 @@ public class OptimizerUtils
                        {
                                switch( uroot.getOp() )
                                {
-                                       case SQRT:      ret = Math.sqrt(lval); 
break;
+                                       case SQRT:  ret = Math.sqrt(lval); 
break;
                                        case ROUND: ret = Math.round(lval); 
break;
+                                       case CEIL:  ret = Math.ceil(lval); 
break;
+                                       case FLOOR: ret = Math.floor(lval); 
break;
                                        case CAST_AS_BOOLEAN: ret = (lval!=0)? 
1 : 0; break;
                                        case CAST_AS_INT: ret = 
UtilFunctions.toLong(lval); break;
                                        case CAST_AS_DOUBLE: ret = lval; break;

http://git-wip-us.apache.org/repos/asf/systemml/blob/4f1223a9/src/test_suites/java/org/apache/sysml/test/integration/functions/codegenalg/ZPackageSuite.java
----------------------------------------------------------------------
diff --git 
a/src/test_suites/java/org/apache/sysml/test/integration/functions/codegenalg/ZPackageSuite.java
 
b/src/test_suites/java/org/apache/sysml/test/integration/functions/codegenalg/ZPackageSuite.java
index c07472a..3159928 100644
--- 
a/src/test_suites/java/org/apache/sysml/test/integration/functions/codegenalg/ZPackageSuite.java
+++ 
b/src/test_suites/java/org/apache/sysml/test/integration/functions/codegenalg/ZPackageSuite.java
@@ -36,6 +36,7 @@ import org.junit.runners.Suite;
        AlgorithmMLogreg.class,
        AlgorithmMSVM.class,
        AlgorithmPNMF.class,
+       AlgorithmStepwiseRegression.class,
 })
 
 

Reply via email to