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/08/16 18:01:05 UTC

[2/3] systemml git commit: [SYSTEMML-1842] Fix lost compression flag on HOP DAG recompile/codegen

[SYSTEMML-1842] Fix lost compression flag on HOP DAG recompile/codegen

This patch fixes an issue of dynamic recompilation, which lost the
compression flag - set by the respective rewrite - during HOP DAG
recompilation (w/ DAG deep copy) or code generation (w/ runtime
integration). 

Furthermore, this patch also hardens the compression and codegen
compression tests to explicitly check for executed compress
instructions.


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

Branch: refs/heads/master
Commit: e84e07a81c408f0061b0576ca911d4fce12cb8d3
Parents: 86edac1
Author: Matthias Boehm <mb...@gmail.com>
Authored: Tue Aug 15 18:17:38 2017 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Tue Aug 15 18:17:38 2017 -0700

----------------------------------------------------------------------
 src/main/java/org/apache/sysml/hops/Hop.java    |  1 +
 .../runtime/codegen/SpoofOuterProduct.java      | 95 ++++++++++----------
 .../codegen/CompressedCellwiseTest.java         |  2 +
 .../codegen/CompressedMultiAggregateTest.java   |  2 +
 .../codegen/CompressedOuterProductTest.java     |  2 +
 .../codegen/CompressedRowAggregateTest.java     |  2 +
 .../functions/compress/CompressedL2SVM.java     |  4 +
 .../functions/compress/CompressedLinregCG.java  |  4 +
 8 files changed, 64 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/main/java/org/apache/sysml/hops/Hop.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/Hop.java b/src/main/java/org/apache/sysml/hops/Hop.java
index be4c7e4..bfbdbaf 100644
--- a/src/main/java/org/apache/sysml/hops/Hop.java
+++ b/src/main/java/org/apache/sysml/hops/Hop.java
@@ -1787,6 +1787,7 @@ public abstract class Hop
 		_requiresRecompile = that._requiresRecompile;
 		_requiresReblock = that._requiresReblock;
 		_requiresCheckpoint = that._requiresCheckpoint;
+		_requiresCompression = that._requiresCompression;
 		_outputEmptyBlocks = that._outputEmptyBlocks;
 		
 		_beginLine = that._beginLine;

http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java b/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
index c49201a..442755d 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
@@ -47,7 +47,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		LEFT_OUTER_PRODUCT,
 		RIGHT_OUTER_PRODUCT,
 		CELLWISE_OUTER_PRODUCT, // (e.g., X*log(sigmoid(-(U%*%t(V)))))  )
-		AGG_OUTER_PRODUCT		// (e.g.,sum(X*log(U%*%t(V)+eps)))   )
+		AGG_OUTER_PRODUCT       // (e.g.,sum(X*log(U%*%t(V)+eps)))   )
 	}
 	
 	protected OutProdType _outerProductType;
@@ -86,7 +86,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		
 		//core sequential execute
 		final int m = inputs.get(0).getNumRows();
-		final int n = inputs.get(0).getNumColumns();	
+		final int n = inputs.get(0).getNumColumns();
 		final int k = inputs.get(1).getNumColumns(); // rank
 		
 		MatrixBlock a = inputs.get(0);
@@ -103,7 +103,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 	}
 	
 	@Override
-	public ScalarObject execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, int numThreads)	
+	public ScalarObject execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, int numThreads)
 		throws DMLRuntimeException
 	{
 		//sanity check
@@ -119,14 +119,14 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		
 		//core sequential execute
 		final int m = inputs.get(0).getNumRows();
-		final int n = inputs.get(0).getNumColumns();	
+		final int n = inputs.get(0).getNumColumns();
 		final int k = inputs.get(1).getNumColumns(); // rank
 		double sum = 0;
 		
 		try 
 		{
 			ExecutorService pool = Executors.newFixedThreadPool(k);
-			ArrayList<ParOuterProdAggTask> tasks = new ArrayList<ParOuterProdAggTask>();			
+			ArrayList<ParOuterProdAggTask> tasks = new ArrayList<ParOuterProdAggTask>();
 			//create tasks (for wdivmm-left, parallelization over columns;
 			//for wdivmm-right, parallelization over rows; both ensure disjoint results)
 			int numThreads2 = UtilFunctions.roundToNext(Math.min(8*k,m/32), k);
@@ -144,10 +144,10 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 			throw new DMLRuntimeException(e);
 		} 
 		
-		return new DoubleObject(sum);	
+		return new DoubleObject(sum);
 	}
 	
-	public void execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, MatrixBlock out)	
+	public void execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, MatrixBlock out)
 		throws DMLRuntimeException
 	{
 		//sanity check
@@ -169,7 +169,6 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		}		
 		else {	
 			//if left outerproduct gives a value of k*n instead of n*k, change it back to n*k and then transpose the output
-			//if(_outerProductType == OutProdType.LEFT_OUTER_PRODUCT &&  out.getNumRows() == inputs.get(2).getNumColumns() &&  out.getNumColumns() == inputs.get(2).getNumRows())
 			if(_outerProductType == OutProdType.LEFT_OUTER_PRODUCT )
 				out.reset(inputs.get(0).getNumColumns(), inputs.get(1).getNumColumns(), false); // n*k
 			else if(_outerProductType == OutProdType.RIGHT_OUTER_PRODUCT )
@@ -188,16 +187,17 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 				
 		//core sequential execute
 		final int m = inputs.get(0).getNumRows();
-		final int n = inputs.get(0).getNumColumns();	
+		final int n = inputs.get(0).getNumColumns();
 		final int k = inputs.get(1).getNumColumns(); // rank
 		
 		MatrixBlock a = inputs.get(0);
 		
 		switch(_outerProductType) {
-			case LEFT_OUTER_PRODUCT:	
+			case LEFT_OUTER_PRODUCT:
 			case RIGHT_OUTER_PRODUCT:
 				if( a instanceof CompressedMatrixBlock )
-					executeCompressed((CompressedMatrixBlock)a, ab[0], ab[1], b, scalars, out.getDenseBlock(), m, n, k, _outerProductType, 0, m, 0, n);
+					executeCompressed((CompressedMatrixBlock)a, ab[0], ab[1], b, scalars, out.getDenseBlock(), 
+						m, n, k, _outerProductType, 0, m, 0, ((CompressedMatrixBlock)a).getNumColGroups());
 				else if( !a.isInSparseFormat() )
 					executeDense(a.getDenseBlock(), ab[0], ab[1], b, scalars, out.getDenseBlock(), m, n, k, _outerProductType, 0, m, 0, n);
 				else
@@ -251,7 +251,6 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		else
 		{
 			//if left outerproduct gives a value of k*n instead of n*k, change it back to n*k and then transpose the output
-			//if(_outerProductType == OutProdType.LEFT_OUTER_PRODUCT &&  out.getNumRows() == inputs.get(2).getNumColumns() &&  out.getNumColumns() == inputs.get(2).getNumRows())
 			if( _outerProductType == OutProdType.LEFT_OUTER_PRODUCT )
 				out.reset(inputs.get(0).getNumColumns(),inputs.get(1).getNumColumns(), false); // n*k
 			else if( _outerProductType == OutProdType.RIGHT_OUTER_PRODUCT )
@@ -266,7 +265,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		
 		//core sequential execute
 		final int m = inputs.get(0).getNumRows();
-		final int n = inputs.get(0).getNumColumns();	
+		final int n = inputs.get(0).getNumColumns();
 		final int k = inputs.get(1).getNumColumns(); // rank
 		
 		MatrixBlock a = inputs.get(0);
@@ -274,7 +273,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		try 
 		{			
 			ExecutorService pool = Executors.newFixedThreadPool(numThreads);
-			ArrayList<ParExecTask> tasks = new ArrayList<ParExecTask>();			
+			ArrayList<ParExecTask> tasks = new ArrayList<ParExecTask>();
 			//create tasks (for wdivmm-left, parallelization over columns;
 			//for wdivmm-right, parallelization over rows; both ensure disjoint results)
 			
@@ -310,7 +309,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		}
 		
 		//post-processing
-		if( a instanceof CompressedMatrixBlock ) { 
+		if( a instanceof CompressedMatrixBlock ) {
 			if( out.isInSparseFormat() && _outerProductType == OutProdType.CELLWISE_OUTER_PRODUCT )
 				out.sortSparseRows();
 			else if( _outerProductType == OutProdType.LEFT_OUTER_PRODUCT )
@@ -319,8 +318,8 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		out.examSparsity();
 	}
 	
-	private void executeDense(double[] a, double[] u, double[] v, double[][] b, double[] scalars, 
-		double[] c, int m, int n, int k, OutProdType type, int rl, int ru, int cl, int cu ) 
+	private void executeDense(double[] a, double[] u, double[] v, double[][] b, double[] scalars,
+		double[] c, int m, int n, int k, OutProdType type, int rl, int ru, int cl, int cu )
 	{
 		//approach: iterate over non-zeros of w, selective mm computation
 		//cache-conscious blocking: due to blocksize constraint (default 1000),
@@ -330,10 +329,10 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		int cix = 0;
 		//blocked execution
 		for( int bi = rl; bi < ru; bi+=blocksizeIJ )
-			for( int bj = cl, bimin = Math.min(ru, bi+blocksizeIJ); bj < cu; bj+=blocksizeIJ ) 
+			for( int bj = cl, bimin = Math.min(ru, bi+blocksizeIJ); bj < cu; bj+=blocksizeIJ )
 			{
 				int bjmin = Math.min(cu, bj+blocksizeIJ);
-						
+				
 				//core computation
 				for( int i=bi, ix=bi*n, uix=bi*k; i<bimin; i++, ix+=n, uix+=k )
 					for( int j=bj, vix=bj*k; j<bjmin; j++, vix+=k)
@@ -344,34 +343,34 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 			}
 	}
 	
-	private void executeCellwiseDense(double[] a, double[] u, double[] v, double[][] b, double[] scalars, 
-		double[] c, int m, int n, int k, OutProdType type, int rl, int ru, int cl, int cu ) 
+	private void executeCellwiseDense(double[] a, double[] u, double[] v, double[][] b, double[] scalars,
+		double[] c, int m, int n, int k, OutProdType type, int rl, int ru, int cl, int cu )
 	{
 		//approach: iterate over non-zeros of w, selective mm computation
 		//cache-conscious blocking: due to blocksize constraint (default 1000),
-		//a blocksize of 16 allows to fit blocks of UV into L2 cache (256KB) 
+		//a blocksize of 16 allows to fit blocks of UV into L2 cache (256KB)
 		
-		final int blocksizeIJ = 16; //u/v block (max at typical L2 size) 
+		final int blocksizeIJ = 16; //u/v block (max at typical L2 size)
 		//blocked execution
 		for( int bi = rl; bi < ru; bi+=blocksizeIJ )
-			for( int bj = cl, bimin = Math.min(ru, bi+blocksizeIJ); bj < cu; bj+=blocksizeIJ ) 
+			for( int bj = cl, bimin = Math.min(ru, bi+blocksizeIJ); bj < cu; bj+=blocksizeIJ )
 			{
 				int bjmin = Math.min(cu, bj+blocksizeIJ);
-						
+				
 				//core computation
 				for( int i=bi, ix=bi*n, uix=bi*k; i<bimin; i++, ix+=n, uix+=k )
 					for( int j=bj, vix=bj*k; j<bjmin; j++, vix+=k)
 						if( a[ix+j] != 0 ) {
 							//int cix = (type == OutProdType.LEFT_OUTER_PRODUCT) ? vix : uix;
 							if(type == OutProdType.CELLWISE_OUTER_PRODUCT)
-								c[ix+j] = genexecCellwise( a[ix+j], u, uix, v, vix, b, scalars, m, n, k, i, j ); 
+								c[ix+j] = genexecCellwise( a[ix+j], u, uix, v, vix, b, scalars, m, n, k, i, j );
 							else
-								c[0]  += genexecCellwise( a[ix+j], u, uix, v, vix, b, scalars, m, n, k, i, j); 	
+								c[0]  += genexecCellwise( a[ix+j], u, uix, v, vix, b, scalars, m, n, k, i, j);
 						}
 			}
 	}
 	
-	private void executeSparse(SparseBlock sblock,  double[] u, double[] v, double[][] b, double[] scalars, 
+	private void executeSparse(SparseBlock sblock,  double[] u, double[] v, double[][] b, double[] scalars,
 		double[] c, int m, int n, int k, long nnz, OutProdType type, int rl, int ru, int cl, int cu) 
 	{
 		boolean left = (_outerProductType== OutProdType.LEFT_OUTER_PRODUCT);
@@ -394,7 +393,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 			}
 			
 			//blocked execution over column blocks
-			for( int bj = cl; bj < cu; bj+=blocksizeJ ) 
+			for( int bj = cl; bj < cu; bj+=blocksizeJ )
 			{
 				int bjmin = Math.min(cu, bj+blocksizeJ);
 				//core wdivmm block matrix mult
@@ -404,11 +403,11 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 					int wpos = sblock.pos(i);
 					int wlen = sblock.size(i);
 					int[] wix = sblock.indexes(i);
-					double[] wval = sblock.values(i);				
-
+					double[] wval = sblock.values(i);
+					
 					int index = wpos + curk[i-bi];
 					for( ; index<wpos+wlen && wix[index]<bjmin; index++ ) {
-						genexecDense(wval[index], u, uix, v, wix[index]*k, b, scalars, c, 
+						genexecDense(wval[index], u, uix, v, wix[index]*k, b, scalars, c,
 							(left ? wix[index]*k : uix), m, n, k, i, wix[index]);
 					}
 					curk[i-bi] = index - wpos;
@@ -420,8 +419,8 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 	private void executeCellwiseSparse(SparseBlock sblock, double[] u, double[] v, double[][] b, double[] scalars, 
 		MatrixBlock out, int m, int n, int k, long nnz, OutProdType type, int rl, int ru, int cl, int cu ) 
 	{
-		final int blocksizeIJ = (int) (8L*m*n/nnz); 
-		int[] curk = new int[Math.min(blocksizeIJ, ru-rl)];			
+		final int blocksizeIJ = (int) (8L*m*n/nnz);
+		int[] curk = new int[Math.min(blocksizeIJ, ru-rl)];
 		
 		if( !out.isInSparseFormat() ) //DENSE
 		{
@@ -442,7 +441,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 						int index = wpos + curk[i-bi];
 						for( ; index<wpos+wlen && wix[index]<bjmin; index++ ) {
 							if(type == OutProdType.CELLWISE_OUTER_PRODUCT)
-								c[wix[index]] = genexecCellwise( wval[index], u, uix, v, wix[index]*k, b, scalars, m, n, k, i, wix[index] ); 
+								c[wix[index]] = genexecCellwise( wval[index], u, uix, v, wix[index]*k, b, scalars, m, n, k, i, wix[index] );
 							else
 								c[0] += genexecCellwise( wval[index], u, uix, v, wix[index]*k, b, scalars, m, n, k, i, wix[index]);
 						}
@@ -469,8 +468,8 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 						double[] wval = sblock.values(i);
 						int index = wpos + curk[i-bi];
 						for( ; index<wpos+wlen && wix[index]<bjmin; index++ ) {
-							c.append(i, wix[index], genexecCellwise( wval[index], u, uix, v, 
-									wix[index]*k, b, scalars, m, n, k, i, wix[index] )); 
+							c.append(i, wix[index], genexecCellwise( wval[index], u, uix, v,
+								wix[index]*k, b, scalars, m, n, k, i, wix[index] ));
 						}
 						curk[i-bi] = index - wpos;
 					}
@@ -484,19 +483,19 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 	{
 		boolean left = (_outerProductType==OutProdType.LEFT_OUTER_PRODUCT);
 		
-		Iterator<IJV> iter = !left ? a.getIterator(rl, ru, false) : 
+		Iterator<IJV> iter = !left ? a.getIterator(rl, ru, false) :
 			a.getIterator(rl, ru, cl, cu, false); //cl/cu -> colgroups
 		while( iter.hasNext() ) {
 			IJV cell = iter.next();
 			int uix = cell.getI() * k;
 			int vix = cell.getJ() * k;
-			genexecDense(cell.getV(), u, uix, v, vix, b, scalars, c, 
+			genexecDense(cell.getV(), u, uix, v, vix, b, scalars, c,
 				left ? vix : uix, m, n, k, cell.getI(), cell.getJ());
 		}
 	}
 	
-	private void executeCellwiseCompressed(CompressedMatrixBlock a, double[] u, double[] v, double[][] b, double[] scalars, 
-		MatrixBlock out, int m, int n, int k, OutProdType type, int rl, int ru, int cl, int cu ) 
+	private void executeCellwiseCompressed(CompressedMatrixBlock a, double[] u, double[] v, double[][] b, double[] scalars,
+		MatrixBlock out, int m, int n, int k, OutProdType type, int rl, int ru, int cl, int cu )
 	{			
 		double[] c = out.getDenseBlock();
 		SparseBlock csblock = out.getSparseBlock();
@@ -509,11 +508,11 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 			if( type == OutProdType.CELLWISE_OUTER_PRODUCT ) {
 				if( out.isInSparseFormat() ) {
 					csblock.allocate(cell.getI());
-					csblock.append(cell.getI(), cell.getJ(), 
+					csblock.append(cell.getI(), cell.getJ(),
 						genexecCellwise(cell.getV(), u, uix, v, vix, b, scalars, m, n, k, cell.getI(), cell.getJ()));
 				}
 				else {
-					c[cell.getI()*n+cell.getJ()] = 
+					c[cell.getI()*n+cell.getJ()] =
 						genexecCellwise(cell.getV(), u, uix, v, vix, b, scalars, m, n, k, cell.getI(), cell.getJ());
 				}
 			}
@@ -523,12 +522,12 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		}
 	}
 
-	protected abstract void genexecDense( double a, double[] u, int ui, double[] v, int vi, double[][] b, 
+	protected abstract void genexecDense( double a, double[] u, int ui, double[] v, int vi, double[][] b,
 		double[] scalars, double[] c, int ci, int m, int n, int k, int rowIndex, int colIndex);
 	
-	protected abstract double genexecCellwise( double a, double[] u, int ui, double[] v, int vi, double[][] b, 
+	protected abstract double genexecCellwise( double a, double[] u, int ui, double[] v, int vi, double[][] b,
 		double[] scalars, int m, int n, int k, int rowIndex, int colIndex);
-
+	
 	private class ParExecTask implements Callable<Long> 
 	{
 		private final MatrixBlock _a;
@@ -567,7 +566,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		public Long call() throws DMLRuntimeException {
 			switch(_type)
 			{
-				case LEFT_OUTER_PRODUCT:	
+				case LEFT_OUTER_PRODUCT:
 				case RIGHT_OUTER_PRODUCT:
 					if( _a instanceof CompressedMatrixBlock )
 						executeCompressed((CompressedMatrixBlock)_a, _u, _v, _b, _scalars, _c.getDenseBlock(), _rlen, _clen, _k, _type, _rl, _ru, _cl, _cu);
@@ -583,7 +582,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 						executeCellwiseDense(_a.getDenseBlock(), _u, _v, _b, _scalars, _c.getDenseBlock(), _rlen, _clen, _k, _type, _rl, _ru, _cl, _cu);
 					else 
 						executeCellwiseSparse(_a.getSparseBlock(), _u, _v, _b, _scalars, _c, _rlen, _clen, _k, _a.getNonZeros(), _type,  _rl, _ru, _cl, _cu);
-					break;			
+					break;
 				case AGG_OUTER_PRODUCT:
 					throw new DMLRuntimeException("Wrong codepath for aggregate outer product.");
 			}

http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedCellwiseTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedCellwiseTest.java b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedCellwiseTest.java
index 417905d..f84ec75 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedCellwiseTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedCellwiseTest.java
@@ -308,6 +308,8 @@ public class CompressedCellwiseTest extends AutomatedTestBase
 			TestUtils.compareMatrices(dmlfile, rfile, eps, "Stat-DML", "Stat-R");
 			Assert.assertTrue(heavyHittersContainsSubString("spoofCell") 
 				|| heavyHittersContainsSubString("sp_spoofCell"));
+			Assert.assertTrue(heavyHittersContainsSubString("compress")
+				|| heavyHittersContainsSubString("sp_compress"));
 		}
 		finally {
 			rtplatform = platformOld;

http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedMultiAggregateTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedMultiAggregateTest.java b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedMultiAggregateTest.java
index 4a16694..82f6178 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedMultiAggregateTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedMultiAggregateTest.java
@@ -308,6 +308,8 @@ public class CompressedMultiAggregateTest extends AutomatedTestBase
 			TestUtils.compareMatrices(dmlfile, rfile, eps, "Stat-DML", "Stat-R");
 			Assert.assertTrue(heavyHittersContainsSubString("spoofMA") 
 				|| heavyHittersContainsSubString("sp_spoofMA"));
+			Assert.assertTrue(heavyHittersContainsSubString("compress")
+				|| heavyHittersContainsSubString("sp_compress"));
 		}
 		finally {
 			rtplatform = platformOld;

http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedOuterProductTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedOuterProductTest.java b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedOuterProductTest.java
index 1f641f9..a71294a 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedOuterProductTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedOuterProductTest.java
@@ -243,6 +243,8 @@ public class CompressedOuterProductTest extends AutomatedTestBase
 			TestUtils.compareMatrices(dmlfile, rfile, eps, "Stat-DML", "Stat-R");
 			Assert.assertTrue(heavyHittersContainsSubString("spoofOP", 4) 
 				|| heavyHittersContainsSubString("sp_spoofOP", 4));
+			Assert.assertTrue(heavyHittersContainsSubString("compress")
+				|| heavyHittersContainsSubString("sp_compress"));
 		}
 		finally {
 			rtplatform = platformOld;

http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedRowAggregateTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedRowAggregateTest.java b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedRowAggregateTest.java
index 27f1b7c..330dd47 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedRowAggregateTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/codegen/CompressedRowAggregateTest.java
@@ -243,6 +243,8 @@ public class CompressedRowAggregateTest extends AutomatedTestBase
 			TestUtils.compareMatrices(dmlfile, rfile, eps, "Stat-DML", "Stat-R");
 			Assert.assertTrue(heavyHittersContainsSubString("spoofRA", 2) 
 				|| heavyHittersContainsSubString("sp_spoofRA", 2));
+			Assert.assertTrue(heavyHittersContainsSubString("compress")
+				|| heavyHittersContainsSubString("sp_compress"));
 		}
 		finally {
 			rtplatform = platformOld;

http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedL2SVM.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedL2SVM.java b/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedL2SVM.java
index 9dab4a6..00a62d7 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedL2SVM.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedL2SVM.java
@@ -30,6 +30,7 @@ import org.apache.sysml.runtime.matrix.data.MatrixValue.CellIndex;
 import org.apache.sysml.test.integration.AutomatedTestBase;
 import org.apache.sysml.test.integration.TestConfiguration;
 import org.apache.sysml.test.utils.TestUtils;
+import org.junit.Assert;
 import org.junit.Test;
 
 /**
@@ -127,6 +128,9 @@ public class CompressedL2SVM extends AutomatedTestBase
 			HashMap<CellIndex, Double> dmlfile = readDMLMatrixFromHDFS("w");
 			HashMap<CellIndex, Double> rfile  = readRMatrixFromFS("w");
 			TestUtils.compareMatrices(dmlfile, rfile, eps, "Stat-DML", "Stat-R");
+			
+			Assert.assertTrue(heavyHittersContainsSubString("compress")
+				|| heavyHittersContainsSubString("sp_compress"));
 		}
 		finally {
 			rtplatform = platformOld;

http://git-wip-us.apache.org/repos/asf/systemml/blob/e84e07a8/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedLinregCG.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedLinregCG.java b/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedLinregCG.java
index 170442c..be62544 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedLinregCG.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/compress/CompressedLinregCG.java
@@ -31,6 +31,7 @@ import org.apache.sysml.runtime.matrix.data.MatrixValue.CellIndex;
 import org.apache.sysml.test.integration.AutomatedTestBase;
 import org.apache.sysml.test.integration.TestConfiguration;
 import org.apache.sysml.test.utils.TestUtils;
+import org.junit.Assert;
 import org.junit.Test;
 
 /**
@@ -135,6 +136,9 @@ public class CompressedLinregCG extends AutomatedTestBase
 			HashMap<CellIndex, Double> dmlfile = readDMLMatrixFromHDFS("w");
 			HashMap<CellIndex, Double> rfile  = readRMatrixFromFS("w");
 			TestUtils.compareMatrices(dmlfile, rfile, eps, "Stat-DML", "Stat-R");
+			
+			Assert.assertTrue(heavyHittersContainsSubString("compress")
+				|| heavyHittersContainsSubString("sp_compress"));
 		}
 		finally {
 			rtplatform = platformOld;