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 =&gt; modules OK, but second-order functions required
  *