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. */
