[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 <[email protected]> Authored: Tue Aug 15 18:17:38 2017 -0700 Committer: Matthias Boehm <[email protected]> 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;
