You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2017/06/17 20:12:02 UTC
[2/3] systemml git commit: [SYSTEMML-1715] Fix parfor data
partitioning (access pattern analysis)
[SYSTEMML-1715] Fix parfor data partitioning (access pattern analysis)
This patch fixes null pointer exceptions on parfor data partitioning
rewrites w/ complex indexing expressions that cannot be parsed into a
linear function for analysis (e.g., in case of variables).
Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/723a7517
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/723a7517
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/723a7517
Branch: refs/heads/master
Commit: 723a7517ab937096135e911631c18188a634a922
Parents: 1001b3f
Author: Matthias Boehm <mb...@gmail.com>
Authored: Fri Jun 16 22:12:55 2017 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Sat Jun 17 13:11:35 2017 -0700
----------------------------------------------------------------------
.../sysml/parser/ParForStatementBlock.java | 22 ++++++++++----------
.../controlprogram/ParForProgramBlock.java | 2 +-
2 files changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/systemml/blob/723a7517/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 784df63..4dc06bd 100644
--- a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
@@ -1894,7 +1894,7 @@ public class ParForStatementBlock extends ForStatementBlock
{
ret = rParseBinaryExpression((BinaryExpression) l);
Long cvalR = parseLongConstant(r);
- if( cvalR != null )
+ if( ret != null && cvalR != null )
ret.addConstant(cvalR);
else
return null;
@@ -1903,7 +1903,7 @@ public class ParForStatementBlock extends ForStatementBlock
{
ret = rParseBinaryExpression((BinaryExpression) r);
Long cvalL = parseLongConstant(l);
- if( cvalL != null )
+ if( ret != null && cvalL != null )
ret.addConstant(cvalL);
else
return null;
@@ -1926,19 +1926,19 @@ public class ParForStatementBlock extends ForStatementBlock
if( l instanceof BinaryExpression)
{
ret = rParseBinaryExpression((BinaryExpression) l);
- //change to plus
- Long cvalR = parseLongConstant(r);
- ret.addConstant(cvalR*(-1));
+ if( ret != null ) //change to plus
+ ret.addConstant(parseLongConstant(r)*(-1));
}
else if (r instanceof BinaryExpression)
{
ret = rParseBinaryExpression((BinaryExpression) r);
- //change to plus
- ret._a*=(-1);
- for( int i=0; i<ret._b.length; i++ )
- ret._b[i]*=(-1);
- Long cvalL = parseLongConstant(l);
- ret.addConstant(cvalL);
+ if( ret != null ) { //change to plus
+ ret._a*=(-1);
+ for( int i=0; i<ret._b.length; i++ )
+ ret._b[i]*=(-1);
+ Long cvalL = parseLongConstant(l);
+ ret.addConstant(cvalL);
+ }
}
else // atomic case
{
http://git-wip-us.apache.org/repos/asf/systemml/blob/723a7517/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java b/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
index 4387362..32f105b 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
@@ -116,7 +116,7 @@ import org.apache.sysml.yarn.ropt.YarnClusterAnalyzer;
* the independent iterations in parallel. See ParForStatementBlock for the loop dependency
* analysis. At runtime level, iterations are guaranteed to be completely independent.
*
- * NEW FUNCTIONALITIES (not for BI 2.0 release)
+ * NEW FUNCTIONALITIES
* TODO: reduction variables (operations: +=, -=, /=, *=, min, max)
* TODO: papply(A,1:2,FUN) language construct (compiled to ParFOR) via DML function repository => modules OK, but second-order functions required
*