Repository: incubator-systemml
Updated Branches:
  refs/heads/master 30b156f03 -> 9607a376a


[SYSTEMML-567] Fix hop compilation w/ frames (known dims, recompile)  

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

Branch: refs/heads/master
Commit: 4c058fa3e12a7567dabbf54ee38bcbf3ebcbe861
Parents: 30b156f
Author: Matthias Boehm <[email protected]>
Authored: Tue May 31 22:59:37 2016 -0700
Committer: Matthias Boehm <[email protected]>
Committed: Wed Jun 1 09:48:41 2016 -0700

----------------------------------------------------------------------
 src/main/java/org/apache/sysml/hops/DataOp.java     |  4 ++--
 src/main/java/org/apache/sysml/hops/Hop.java        | 16 +++++++++++-----
 .../org/apache/sysml/hops/recompile/Recompiler.java |  4 ++--
 3 files changed, 15 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/4c058fa3/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 a9cb8b9..d83659c 100644
--- a/src/main/java/org/apache/sysml/hops/DataOp.java
+++ b/src/main/java/org/apache/sysml/hops/DataOp.java
@@ -374,13 +374,13 @@ public class DataOp extends Hop
                                        ret = 0;
                        }
                }
-               else //MATRIX 
+               else //MATRIX / FRAME
                {
                        if(   _dataop == DataOpTypes.PERSISTENTREAD 
                           || _dataop == DataOpTypes.TRANSIENTREAD ) 
                        {
                                double sparsity = 
OptimizerUtils.getSparsity(dim1, dim2, nnz);
-                               ret = 
OptimizerUtils.estimateSizeExactSparsity(dim1, dim2, sparsity);   
+                               ret = 
OptimizerUtils.estimateSizeExactSparsity(dim1, dim2, sparsity);
                        }
                        // output memory estimate is not required for "write" 
nodes (just input)
                }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/4c058fa3/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 43193a9..088ddb4 100644
--- a/src/main/java/org/apache/sysml/hops/Hop.java
+++ b/src/main/java/org/apache/sysml/hops/Hop.java
@@ -617,6 +617,7 @@ public abstract class Hop
                                        _outputMemEstimate = 
computeOutputMemEstimate( _dim1, _dim2, _nnz );
                                break;
                        }
+                       case FRAME:
                        case MATRIX:
                        {
                                //1a) mem estimate based on exactly known 
dimensions and sparsity
@@ -663,8 +664,7 @@ public abstract class Hop
                                break;
                        }
                        case OBJECT:
-                       case UNKNOWN:
-                       case FRAME:     
+                       case UNKNOWN:   
                        {
                                //memory estimate always unknown
                                _outputMemEstimate = 
OptimizerUtils.DEFAULT_SIZE;
@@ -866,15 +866,21 @@ public abstract class Hop
        }
        
        public boolean dimsKnown() {
-               return ( _dataType == DataType.SCALAR || 
(_dataType==DataType.MATRIX && _dim1 > 0 && _dim2 > 0) );
+               return ( _dataType == DataType.SCALAR 
+                       || ((_dataType==DataType.MATRIX || 
_dataType==DataType.FRAME) 
+                               && _dim1 > 0 && _dim2 > 0) );
        }
        
        public boolean dimsKnown(boolean includeNnz) {
-               return ( _dataType == DataType.SCALAR || 
(_dataType==DataType.MATRIX && _dim1 > 0 && _dim2 > 0 && ((includeNnz)? _nnz>=0 
: true)) );
+               return ( _dataType == DataType.SCALAR 
+                       || ((_dataType==DataType.MATRIX || 
_dataType==DataType.FRAME) 
+                               && _dim1 > 0 && _dim2 > 0 && ((includeNnz)? 
_nnz>=0 : true)));
        }
 
        public boolean dimsKnownAny() {
-               return ( _dataType == DataType.SCALAR || 
(_dataType==DataType.MATRIX && (_dim1 > 0 || _dim2 > 0)) );
+               return ( _dataType == DataType.SCALAR 
+                       || ((_dataType==DataType.MATRIX || 
_dataType==DataType.FRAME) 
+                               && (_dim1 > 0 || _dim2 > 0)) );
        }
        
        public static void resetVisitStatus( ArrayList<Hop> hops )

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/4c058fa3/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java 
b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
index c21c3a7..d5a6c5f 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
@@ -2099,8 +2099,8 @@ public class Recompiler
                                        DataType dt = 
DataType.valueOf(String.valueOf(mtd.get(DataExpression.DATATYPEPARAM)).toUpperCase());
                                        dop.setDataType(dt);
                                        
dop.setValueType(ValueType.valueOf(String.valueOf(mtd.get(DataExpression.VALUETYPEPARAM)).toUpperCase()));
-                                       
dop.setDim1((dt==DataType.MATRIX)?Long.parseLong(mtd.get(DataExpression.READROWPARAM).toString()):0);
-                                       
dop.setDim2((dt==DataType.MATRIX)?Long.parseLong(mtd.get(DataExpression.READCOLPARAM).toString()):0);
+                                       
dop.setDim1((dt==DataType.MATRIX||dt==DataType.FRAME)?Long.parseLong(mtd.get(DataExpression.READROWPARAM).toString()):0);
+                                       
dop.setDim2((dt==DataType.MATRIX||dt==DataType.FRAME)?Long.parseLong(mtd.get(DataExpression.READCOLPARAM).toString()):0);
                                }
                                finally {
                                        if( br != null )

Reply via email to