Repository: systemml Updated Branches: refs/heads/master a640e57b0 -> 3d5dbe429
[SYSTEMML-2153] Fix robustness parfor check for block partitioning This patch fixes the robustness of the parfor optimizer (for validating a potential input block partitioning) and dependency analysis with regard to null variable names in index expressions. Project: http://git-wip-us.apache.org/repos/asf/systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/3d5dbe42 Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/3d5dbe42 Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/3d5dbe42 Branch: refs/heads/master Commit: 3d5dbe42979004fec95cdf01fd63bd065a7ccc99 Parents: a640e57 Author: Matthias Boehm <[email protected]> Authored: Fri Feb 16 20:00:36 2018 -0800 Committer: Matthias Boehm <[email protected]> Committed: Fri Feb 16 20:00:36 2018 -0800 ---------------------------------------------------------------------- .../java/org/apache/sysml/parser/ParForStatementBlock.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/systemml/blob/3d5dbe42/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java index cc33352..d209c36 100644 --- a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java +++ b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java @@ -1956,9 +1956,12 @@ public class ParForStatementBlock extends ForStatementBlock boolean ret = ( _b.length == f2._b.length ); for( int i=0; i<_b.length && ret; i++ ) { ret &= (_b[i] == f2._b[i] ); - ret &= (_vars[i].equals(f2._vars[i]) - ||(_vars[i].startsWith(INTERAL_FN_INDEX_ROW) && f2._vars[i].startsWith(INTERAL_FN_INDEX_ROW)) - ||(_vars[i].startsWith(INTERAL_FN_INDEX_COL) && f2._vars[i].startsWith(INTERAL_FN_INDEX_COL)) ) ; + //note robustness for null var names + String var1 = String.valueOf(_vars[i]); + String var2 = String.valueOf(f2._vars[i]); + ret &= (var1.equals(var2) + ||(var1.startsWith(INTERAL_FN_INDEX_ROW) && var2.startsWith(INTERAL_FN_INDEX_ROW)) + ||(var1.startsWith(INTERAL_FN_INDEX_COL) && var2.startsWith(INTERAL_FN_INDEX_COL))); } return ret; }
