You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by ac...@apache.org on 2016/02/18 23:23:46 UTC

incubator-systemml git commit: [SYSML-282] UpdateInPlace parfor intermediate cleanup

Repository: incubator-systemml
Updated Branches:
  refs/heads/master b280b7bc9 -> f21eab7db


[SYSML-282] UpdateInPlace parfor intermediate cleanup


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

Branch: refs/heads/master
Commit: f21eab7db4c6980b0ff56f2f16b59a050e2f70b1
Parents: b280b7b
Author: Arvind Surve <ac...@yahoo.com>
Authored: Thu Feb 18 13:53:34 2016 -0800
Committer: Arvind Surve <ac...@yahoo.com>
Committed: Thu Feb 18 13:53:34 2016 -0800

----------------------------------------------------------------------
 .../parfor/opt/OptimizerRuleBased.java          |  2 +-
 .../cp/MatrixIndexingCPInstruction.java         | 10 ++++
 .../instructions/cp/VariableCPInstruction.java  |  4 +-
 .../java/org/apache/sysml/utils/Statistics.java | 19 +++++---
 .../updateinplace/UpdateInPlaceTest.java        | 49 +++++++++++---------
 5 files changed, 50 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/f21eab7d/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
index 9754756..6c4d254 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
@@ -155,7 +155,7 @@ public class OptimizerRuleBased extends Optimizer
 	public static final boolean APPLY_REWRITE_NESTED_PARALLELISM = false;
 	public static final String FUNCTION_UNFOLD_NAMEPREFIX = "__unfold_";
 	
-	public static final boolean APPLY_REWRITE_UPDATE_INPLACE_INTERMEDIATE = true;
+	public static final boolean APPLY_REWRITE_UPDATE_INPLACE_INTERMEDIATE = false;
 	
 	public static final double PAR_K_FACTOR        = OptimizationWrapper.PAR_FACTOR_INFRASTRUCTURE; 
 	public static final double PAR_K_MR_FACTOR     = 1.0 * OptimizationWrapper.PAR_FACTOR_INFRASTRUCTURE; 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/f21eab7d/src/main/java/org/apache/sysml/runtime/instructions/cp/MatrixIndexingCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/MatrixIndexingCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/MatrixIndexingCPInstruction.java
index c03e7ae..bfd2b0c 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/MatrixIndexingCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/MatrixIndexingCPInstruction.java
@@ -19,6 +19,7 @@
 
 package org.apache.sysml.runtime.instructions.cp;
 
+import org.apache.sysml.api.DMLScript;
 import org.apache.sysml.parser.Expression.DataType;
 import org.apache.sysml.parser.Expression.ValueType;
 import org.apache.sysml.runtime.DMLRuntimeException;
@@ -30,6 +31,7 @@ import org.apache.sysml.runtime.matrix.data.MatrixBlock;
 import org.apache.sysml.runtime.matrix.operators.Operator;
 import org.apache.sysml.runtime.matrix.operators.SimpleOperator;
 import org.apache.sysml.runtime.util.IndexRange;
+import org.apache.sysml.utils.Statistics;
 
 public class MatrixIndexingCPInstruction extends UnaryCPInstruction
 {
@@ -165,6 +167,14 @@ public class MatrixIndexingCPInstruction extends UnaryCPInstruction
 		else if ( opcode.equalsIgnoreCase("leftIndex"))
 		{
 			boolean inplace = mo.isUpdateInPlaceEnabled();
+			if(DMLScript.STATISTICS)
+			{
+				if(inplace)
+					Statistics.incrementTotalLixUIP();
+				Statistics.incrementTotalLix();
+			}
+
+			
 			MatrixBlock matBlock = ec.getMatrixInput(input1.getName());
 			MatrixBlock resultBlock = null;
 			

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/f21eab7d/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
index bf8d792..22bd2ab 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
@@ -447,9 +447,7 @@ public class VariableCPInstruction extends CPInstruction
 				mobj.enableUpdateInPlace(updateInPlace);
 				ec.setVariable(input1.getName(), mobj);
 				if(updateInPlace)
-					Statistics.incrementTotUpdateInPlace();
-				else
-					Statistics.incrementTotNonUpdateInPlace();
+					Statistics.incrementTotalUIPVar();
 			}
 			else if ( input1.getDataType() == DataType.SCALAR ){
 				ScalarObject sobj = null;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/f21eab7d/src/main/java/org/apache/sysml/utils/Statistics.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/Statistics.java b/src/main/java/org/apache/sysml/utils/Statistics.java
index 499b19c..167f6db 100644
--- a/src/main/java/org/apache/sysml/utils/Statistics.java
+++ b/src/main/java/org/apache/sysml/utils/Statistics.java
@@ -88,8 +88,9 @@ public class Statistics
 	private static HashMap<String,Long> _cpInstTime   =  new HashMap<String, Long>();
 	private static HashMap<String,Long> _cpInstCounts =  new HashMap<String, Long>();
 	
-	private static AtomicLong lTotUpdateInPlace = new AtomicLong(0);
-	private static AtomicLong lTotNonUpdateInPlace = new AtomicLong(0);
+	private static AtomicLong lTotalUIPVar = new AtomicLong(0);
+	private static AtomicLong lTotalLix = new AtomicLong(0);
+	private static AtomicLong lTotalLixUIP = new AtomicLong(0);
 	
 	public static synchronized void setNoOfExecutedMRJobs(int iNoOfExecutedMRJobs) {
 		Statistics.iNoOfExecutedMRJobs = iNoOfExecutedMRJobs;
@@ -147,12 +148,16 @@ public class Statistics
 		iNoOfCompiledSPInst ++;
 	}
 	
-	public static void incrementTotUpdateInPlace() {
-		lTotUpdateInPlace.incrementAndGet();
+	public static void incrementTotalUIPVar() {
+		lTotalUIPVar.incrementAndGet();
 	}
 
-	public static void incrementTotNonUpdateInPlace() {
-		lTotNonUpdateInPlace.incrementAndGet();
+	public static void incrementTotalLixUIP() {
+		lTotalLixUIP.incrementAndGet();
+	}
+
+	public static void incrementTotalLix() {
+		lTotalLix.incrementAndGet();
 	}
 	
 	/**
@@ -550,7 +555,7 @@ public class Statistics
 				sb.append("ParFor optimize time:\t\t" + String.format("%.3f", ((double)getParforOptTime())/1000) + " sec.\n");	
 				sb.append("ParFor initialize time:\t\t" + String.format("%.3f", ((double)getParforInitTime())/1000) + " sec.\n");	
 				sb.append("ParFor result merge time:\t" + String.format("%.3f", ((double)getParforMergeTime())/1000) + " sec.\n");	
-				sb.append("ParFor total update in-place:\t" + lTotUpdateInPlace + "/" + (lTotUpdateInPlace.get()+lTotNonUpdateInPlace.get()) + "\n");
+				sb.append("ParFor total update in-place:\t" + lTotalUIPVar + "/" + lTotalLixUIP + "/" + lTotalLix + "\n");
 			}
 			sb.append("Total JIT compile time:\t\t" + ((double)getJITCompileTime())/1000 + " sec.\n");
 			sb.append("Total JVM GC count:\t\t" + getJVMgcCount() + ".\n");

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/f21eab7d/src/test/java/org/apache/sysml/test/integration/functions/updateinplace/UpdateInPlaceTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/updateinplace/UpdateInPlaceTest.java b/src/test/java/org/apache/sysml/test/integration/functions/updateinplace/UpdateInPlaceTest.java
index 2732820..503a42f 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/updateinplace/UpdateInPlaceTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/updateinplace/UpdateInPlaceTest.java
@@ -240,35 +240,38 @@ public class UpdateInPlaceTest extends AutomatedTestBase
 			// This is for running the junit test the new way, i.e., construct the arguments directly 
 			String HOME = SCRIPT_DIR + TEST_DIR;
 			fullDMLScriptName = HOME + TEST_NAME + iTestNumber + ".dml";
-			programArgs = new String[]{}; //new String[]{"-args", input("A"), output("B") };
+			programArgs = new String[]{"-stats"}; //new String[]{"-args", input("A"), output("B") };
 			
 			runTest(true, false, null, -1);
 
-			List<String> listUIPRes = OptimizerRuleBased.getUIPList();
-			int iUIPResCount = 0;
-			
-			// If UpdateInPlace list specified in the argument, verify the list.
-			if (listUIPExp != null)
+			if(OptimizerRuleBased.APPLY_REWRITE_UPDATE_INPLACE_INTERMEDIATE)
 			{
-				if(listUIPRes != null)
+				List<String> listUIPRes = OptimizerRuleBased.getUIPList();
+				int iUIPResCount = 0;
+				
+				// If UpdateInPlace list specified in the argument, verify the list.
+				if (listUIPExp != null)
 				{
-					for (String strUIPMatName: listUIPExp)
-						Assert.assertTrue("Expected UpdateInPlace matrix " + strUIPMatName 
-								+ " does not exist in the result UpdateInPlace matrix list.", 
-								listUIPRes.contains(strUIPMatName));
-					
-					iUIPResCount = listUIPRes.size();
+					if(listUIPRes != null)
+					{
+						for (String strUIPMatName: listUIPExp)
+							Assert.assertTrue("Expected UpdateInPlace matrix " + strUIPMatName 
+									+ " does not exist in the result UpdateInPlace matrix list.", 
+									listUIPRes.contains(strUIPMatName));
+						
+						iUIPResCount = listUIPRes.size();
+					}
+	
+					Assert.assertTrue("Expected # of UpdateInPlace matrix object/s " + listUIPExp.size() + 
+						" does not match with the # of matrix objects " + iUIPResCount + " from optimization result.", 
+						(iUIPResCount == listUIPExp.size()));
+				}
+				else
+				{
+					Assert.assertTrue("Expected # of UpdateInPlace matrix object/s " + "0" + 
+							" does not match with the # of matrix objects " + "0" + " from optimization result.", 
+							(listUIPRes == null || listUIPRes.size() == 0));
 				}
-
-				Assert.assertTrue("Expected # of UpdateInPlace matrix object/s " + listUIPExp.size() + 
-					" does not match with the # of matrix objects " + iUIPResCount + " from optimization result.", 
-					(iUIPResCount == listUIPExp.size()));
-			}
-			else
-			{
-				Assert.assertTrue("Expected # of UpdateInPlace matrix object/s " + "0" + 
-						" does not match with the # of matrix objects " + "0" + " from optimization result.", 
-						(listUIPRes == null || listUIPRes.size() == 0));
 			}
 		}
 		finally{