Repository: incubator-systemml
Updated Branches:
  refs/heads/master 82b51425e -> e69a1c261


Fix jmlc/mlcontext apis w/ multiple inputs (disable cse persistent read)

This patch disables cse of persistent reads for the jmlc and mlcontext
APIs in order to allow binding different inputs with empty read meta
data; otherwise multiple reads might be mapped to one registered input. 

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

Branch: refs/heads/master
Commit: 94dbca0e202c7d840ec65e476cae0d56588dbb66
Parents: 82b5142
Author: Matthias Boehm <[email protected]>
Authored: Sat Mar 12 15:04:30 2016 -0800
Committer: Matthias Boehm <[email protected]>
Committed: Sat Mar 12 15:04:30 2016 -0800

----------------------------------------------------------------------
 src/main/java/org/apache/sysml/api/MLContext.java       | 5 ++++-
 src/main/java/org/apache/sysml/api/jmlc/Connection.java | 3 +++
 src/main/java/org/apache/sysml/hops/DataOp.java         | 5 +++--
 src/main/java/org/apache/sysml/hops/OptimizerUtils.java | 7 +++++++
 4 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/94dbca0e/src/main/java/org/apache/sysml/api/MLContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/MLContext.java 
b/src/main/java/org/apache/sysml/api/MLContext.java
index 7585e73..247cd69 100644
--- a/src/main/java/org/apache/sysml/api/MLContext.java
+++ b/src/main/java/org/apache/sysml/api/MLContext.java
@@ -1194,6 +1194,7 @@ public class MLContext {
                        // could be more restrictive and require known 
dimensions (rm REJECT_READ_WRITE_UNKNOWNS).  
                        AParserWrapper.IGNORE_UNSPECIFIED_ARGS = true;
                        DataExpression.REJECT_READ_WRITE_UNKNOWNS = false;
+                       OptimizerUtils.ALLOW_CSE_PERSISTENT_READS = false;
                        
                        if(_monitorUtils != null) {
                                _monitorUtils.resetMonitoringData();
@@ -1257,7 +1258,9 @@ public class MLContext {
                        
                        // Reset parser parameters
                        AParserWrapper.IGNORE_UNSPECIFIED_ARGS = false;
-                       DataExpression.REJECT_READ_WRITE_UNKNOWNS = true;       
                
+                       DataExpression.REJECT_READ_WRITE_UNKNOWNS = true;       
        
+                       OptimizerUtils.ALLOW_CSE_PERSISTENT_READS = 
+                                       
OptimizerUtils.ALLOW_COMMON_SUBEXPRESSION_ELIMINATION;                  
                }
        }
        

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/94dbca0e/src/main/java/org/apache/sysml/api/jmlc/Connection.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/jmlc/Connection.java 
b/src/main/java/org/apache/sysml/api/jmlc/Connection.java
index dd61235..0fe5966 100644
--- a/src/main/java/org/apache/sysml/api/jmlc/Connection.java
+++ b/src/main/java/org/apache/sysml/api/jmlc/Connection.java
@@ -76,6 +76,7 @@ public class Connection
                DataExpression.REJECT_READ_WRITE_UNKNOWNS = false;
                //runtime parameters
                DMLScript.rtplatform = RUNTIME_PLATFORM.SINGLE_NODE;
+               OptimizerUtils.ALLOW_CSE_PERSISTENT_READS = false;
                OptimizerUtils.PARALLEL_CP_READ_TEXTFORMATS = false;
                OptimizerUtils.PARALLEL_CP_WRITE_TEXTFORMATS = false;
                OptimizerUtils.PARALLEL_CP_READ_BINARYFORMATS = false;
@@ -164,6 +165,8 @@ public class Connection
                AParserWrapper.IGNORE_UNSPECIFIED_ARGS = false;
                DataExpression.IGNORE_READ_WRITE_METADATA = false;
                DataExpression.REJECT_READ_WRITE_UNKNOWNS = true;
+               OptimizerUtils.ALLOW_CSE_PERSISTENT_READS = 
+                               
OptimizerUtils.ALLOW_COMMON_SUBEXPRESSION_ELIMINATION;
                OptimizerUtils.PARALLEL_CP_READ_TEXTFORMATS = true;
                OptimizerUtils.PARALLEL_CP_WRITE_TEXTFORMATS = true;
                OptimizerUtils.PARALLEL_CP_READ_BINARYFORMATS = true;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/94dbca0e/src/main/java/org/apache/sysml/hops/DataOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/DataOp.java 
b/src/main/java/org/apache/sysml/hops/DataOp.java
index 925d13a..ca447ec 100644
--- a/src/main/java/org/apache/sysml/hops/DataOp.java
+++ b/src/main/java/org/apache/sysml/hops/DataOp.java
@@ -541,8 +541,9 @@ public class DataOp extends Hop
                //with multiple piggybacked csvreblock of the same input w/ 
unknown input sizes
                
                DataOp that2 = (DataOp)that;    
-               boolean ret = (  _dataop == that2._dataop
-                                     && _dataop == DataOpTypes.PERSISTENTREAD
+               boolean ret = ( OptimizerUtils.ALLOW_CSE_PERSISTENT_READS 
+                                         &&_dataop == that2._dataop
+                                         && _dataop == 
DataOpTypes.PERSISTENTREAD
                                          && _fileName.equals(that2._fileName)
                                          && _inFormat == that2._inFormat
                                          && _inRowsInBlock == 
that2._inRowsInBlock

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/94dbca0e/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 80ef5f0..73de4c4 100644
--- a/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
+++ b/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
@@ -107,6 +107,13 @@ public class OptimizerUtils
        public static boolean ALLOW_COMMON_SUBEXPRESSION_ELIMINATION = true;
 
        /**
+        * Enables common subexpression elimination in dags for persistent 
reads based on filenames
+        * and other relevant read meta data. Disabled for jmlc to allow 
binding of in-memory objects
+        * without specifying read properties.
+        */
+       public static boolean ALLOW_CSE_PERSISTENT_READS = 
ALLOW_COMMON_SUBEXPRESSION_ELIMINATION && true;
+       
+       /**
         * Enables constant folding in dags. Constant folding computes simple 
expressions of binary 
         * operations and literals and replaces the hop sub-DAG with a new 
literal operator. 
         */

Reply via email to