[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;
