[SYSTEMML-2456] Fix sizes propagation matrix casts of lists

This patch fixes the parser validation of matrix casts which incorrectly
propagated the list size as matrix dimensions. Other operations like DNN
ops then incorrectly took this information and created invalid plans
(with literals) such that the core compilation chain could not correct
for these mistakes. We now properly set the dimensions to unknown
because any matrices in a 1x1 list can have arbitrary dimensions.


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

Branch: refs/heads/master
Commit: 504617758b2e55a68a5f65a0df75426ffd806042
Parents: bca1f1c
Author: Matthias Boehm <[email protected]>
Authored: Thu Jul 19 00:08:50 2018 -0700
Committer: Matthias Boehm <[email protected]>
Committed: Thu Jul 19 00:09:13 2018 -0700

----------------------------------------------------------------------
 .../java/org/apache/sysml/parser/BuiltinFunctionExpression.java    | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/50461775/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java 
b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
index c2c48cb..fe67fb6 100644
--- a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
+++ b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
@@ -662,6 +662,8 @@ public class BuiltinFunctionExpression extends 
DataIdentifier
                        output.setDimensions(id.getDim1(), id.getDim2());
                        if( 
getFirstExpr().getOutput().getDataType()==DataType.SCALAR )
                                output.setDimensions(1, 1); //correction scalars
+                       if( 
getFirstExpr().getOutput().getDataType()==DataType.LIST )
+                               output.setDimensions(-1, -1); //correction 
list: arbitrary object
                        output.setBlockDimensions(id.getRowsInBlock(), 
id.getColumnsInBlock());
                        output.setValueType(ValueType.DOUBLE); //matrices 
always in double
                        break;

Reply via email to