http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java index 5d3a631..9e3d8f8 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java @@ -23,7 +23,6 @@ import java.util.Arrays; import java.util.concurrent.Callable; import org.apache.sysml.hops.OptimizerUtils; -import org.apache.sysml.runtime.DMLRuntimeException; import org.apache.sysml.runtime.matrix.data.LibMatrixDNN.PoolingType; import org.apache.sysml.runtime.matrix.data.LibMatrixDNNHelper.CellIndex3; @@ -43,9 +42,8 @@ public class LibMatrixDNNPooling { * @param params convolution parameters * @param poolType type of pooling * @return list of callable tasks for performing pooling operation - * @throws DMLRuntimeException if error occurs */ - public static ArrayList<Callable<Long>> getPoolingWorkers(ConvolutionParameters params, PoolingType poolType) throws DMLRuntimeException { + public static ArrayList<Callable<Long>> getPoolingWorkers(ConvolutionParameters params, PoolingType poolType) { ArrayList<Callable<Long>> ret = new ArrayList<>(); // Try to create twice as many tasks as threads for improved load balance int k = OptimizerUtils.getConstrainedNumThreads(params.numThreads); @@ -66,9 +64,8 @@ public class LibMatrixDNNPooling { * @param performReluBackward whether to perform ReLU backward * @param poolType type of pooling operation to perform * @return list of callable tasks for performing maxpooling backward operation - * @throws DMLRuntimeException if error occurs */ - public static ArrayList<Callable<Long>> getPoolingBackwardWorkers(ConvolutionParameters params, boolean performReluBackward, PoolingType poolType) throws DMLRuntimeException { + public static ArrayList<Callable<Long>> getPoolingBackwardWorkers(ConvolutionParameters params, boolean performReluBackward, PoolingType poolType) { ArrayList<Callable<Long>> ret = new ArrayList<>(); // Try to create twice as many tasks as threads for improved load balance int k = OptimizerUtils.getConstrainedNumThreads(params.numThreads);
http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java index 83a714b..bb0fcf1 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.concurrent.Callable; import org.apache.sysml.hops.OptimizerUtils; -import org.apache.sysml.runtime.DMLRuntimeException; /** * This class contains the different implementation of rotate180 operation @@ -34,9 +33,8 @@ public class LibMatrixDNNRelu * * @param params convolution parameters * @return list of callable tasks for performing relu backward operation - * @throws DMLRuntimeException if error occurs */ - public static ArrayList<Callable<Long>> getReluBackwardWorkers(ConvolutionParameters params) throws DMLRuntimeException { + public static ArrayList<Callable<Long>> getReluBackwardWorkers(ConvolutionParameters params) { ArrayList<Callable<Long>> ret = new ArrayList<>(); int k = OptimizerUtils.getConstrainedNumThreads(params.numThreads); int taskSize = (int)(Math.ceil((double)params.N / k)); http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java index 3e77a72..fa47c37 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java @@ -96,9 +96,7 @@ public class LibMatrixDatagen } @Deprecated - public static LongStream computeNNZperBlock(long nrow, long ncol, int brlen, int bclen, double sparsity) - throws DMLRuntimeException - { + public static LongStream computeNNZperBlock(long nrow, long ncol, int brlen, int bclen, double sparsity) { long lnumBlocks = (long) (Math.ceil((double)nrow/brlen) * Math.ceil((double)ncol/bclen)); //sanity check max number of blocks (before cast to avoid overflow) @@ -135,9 +133,7 @@ public class LibMatrixDatagen } } - public static RandomMatrixGenerator createRandomMatrixGenerator(String pdfStr, int r, int c, int rpb, int cpb, double sp, double min, double max, String distParams) - throws DMLRuntimeException - { + public static RandomMatrixGenerator createRandomMatrixGenerator(String pdfStr, int r, int c, int rpb, int cpb, double sp, double min, double max, String distParams) { RandomMatrixGenerator.PDF pdf = RandomMatrixGenerator.PDF.valueOf(pdfStr.toUpperCase()); RandomMatrixGenerator rgen = null; switch (pdf) { @@ -181,12 +177,8 @@ public class LibMatrixDatagen * @param rgen random matrix generator * @param bigrand Well1024a pseudo-random number generator * @param bSeed seed for random generator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void generateRandomMatrix( MatrixBlock out, RandomMatrixGenerator rgen, - Well1024a bigrand, long bSeed ) - throws DMLRuntimeException - { + public static void generateRandomMatrix( MatrixBlock out, RandomMatrixGenerator rgen, Well1024a bigrand, long bSeed ) { boolean invokedFromCP = (bigrand != null); int rows = rgen._rows; int cols = rgen._cols; @@ -259,11 +251,8 @@ public class LibMatrixDatagen * @param bigrand Well1024a pseudo-random number generator * @param bSeed seed for random generator * @param k ? - * @throws DMLRuntimeException if DMLRuntimeException occurs - */ - public static void generateRandomMatrix( MatrixBlock out, RandomMatrixGenerator rgen, Well1024a bigrand, long bSeed, int k ) - throws DMLRuntimeException - { + */ + public static void generateRandomMatrix( MatrixBlock out, RandomMatrixGenerator rgen, Well1024a bigrand, long bSeed, int k ) { int rows = rgen._rows; int cols = rgen._cols; int rpb = rgen._rowsPerBlock; @@ -362,11 +351,8 @@ public class LibMatrixDatagen * @param from lower end point * @param to upper end point * @param incr increment value - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void generateSequence(MatrixBlock out, double from, double to, double incr) - throws DMLRuntimeException - { + public static void generateSequence(MatrixBlock out, double from, double to, double incr) { //check valid increment value if( (from > to && incr > 0) || incr == 0 ) throw new DMLRuntimeException("Wrong sequence increment: from="+from+", to="+to+ ", incr="+incr); @@ -397,11 +383,8 @@ public class LibMatrixDatagen * @param size sample size * @param replace if true, sample with replacement * @param seed seed for random generator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void generateSample(MatrixBlock out, long range, int size, boolean replace, long seed) - throws DMLRuntimeException - { + public static void generateSample(MatrixBlock out, long range, int size, boolean replace, long seed) { //set meta data and allocate dense block out.reset(size, 1, false); out.allocateDenseBlock(); @@ -462,9 +445,7 @@ public class LibMatrixDatagen return lseeds; } - private static void genRandomNumbers(boolean invokedFromCP, int rl, int ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, long[] seeds) - throws DMLRuntimeException - { + private static void genRandomNumbers(boolean invokedFromCP, int rl, int ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, long[] seeds) { int rows = rgen._rows; int cols = rgen._cols; int rpb = rgen._rowsPerBlock; @@ -589,9 +570,7 @@ public class LibMatrixDatagen } // rbi } - private static void checkMatrixDimensionsAndSparsity(int rows, int cols, double sp) - throws DMLRuntimeException - { + private static void checkMatrixDimensionsAndSparsity(int rows, int cols, double sp) { if( rows < 0 || cols < 0 || sp < 0 || sp > 1) throw new DMLRuntimeException("Invalid matrix characteristics: "+rows+"x"+cols+", "+sp); } @@ -619,9 +598,7 @@ public class LibMatrixDatagen private long _bSeed = 0; private long[] _seeds = null; - public RandTask(int rl, int ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, long[] seeds) - throws DMLRuntimeException - { + public RandTask(int rl, int ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, long[] seeds) { _rl = rl; _ru = ru; _cl = cl; @@ -633,10 +610,9 @@ public class LibMatrixDatagen } @Override - public Long call() throws Exception { + public Long call() { //execute rand operations (with block indexes) genRandomNumbers(true, _rl, _ru, _cl, _cu, _out, _rgen, _bSeed, _seeds); - //thread-local maintenance of non-zero values int rpb =_rgen._rowsPerBlock, cpb = _rgen._colsPerBlock; return _out.recomputeNonZeros(_rl*rpb, Math.min(_ru*rpb,_rgen._rows)-1, http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java index 214c8eb..e7290a8 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java @@ -77,11 +77,8 @@ public class LibMatrixMult * @param m1 first matrix * @param m2 second matrix * @param ret result matrix - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret) - throws DMLRuntimeException - { + public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret) { matrixMult(m1, m2, ret, 0, m1.rlen); } @@ -96,19 +93,16 @@ public class LibMatrixMult * @param m2 second matrix * @param ret result matrix * @param fixedRet if true, output representation is fixed and nnzs not recomputed - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean fixedRet) throws DMLRuntimeException { + public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean fixedRet) { matrixMult(m1, m2, ret, 0, m1.rlen, fixedRet); } - public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int rl, int ru) throws DMLRuntimeException { + public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int rl, int ru) { matrixMult(m1, m2, ret, rl, ru, false); } - public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int rl, int ru, boolean fixedRet) - throws DMLRuntimeException - { + public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int rl, int ru, boolean fixedRet) { //check inputs / outputs if( m1.isEmptyBlock(false) || m2.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -162,11 +156,8 @@ public class LibMatrixMult * @param m2 second matrix * @param ret result matrix * @param k maximum parallelism - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int k) - throws DMLRuntimeException - { + public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int k) { //check inputs / outputs if( m1.isEmptyBlock(false) || m2.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -246,11 +237,8 @@ public class LibMatrixMult * @param mW w matrix * @param ret result matrix * @param ct chain type - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, ChainType ct) - throws DMLRuntimeException - { + public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, ChainType ct) { //check inputs / outputs (after that mV and mW guaranteed to be dense) if( mX.isEmptyBlock(false) || mV.isEmptyBlock(false) || (mW !=null && mW.isEmptyBlock(false)) ) { ret.examSparsity(); //turn empty dense into sparse @@ -290,11 +278,8 @@ public class LibMatrixMult * @param ret result matrix * @param ct chain type * @param k maximum parallelism - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, ChainType ct, int k) - throws DMLRuntimeException - { + public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, ChainType ct, int k) { //check inputs / outputs (after that mV and mW guaranteed to be dense) if( mX.isEmptyBlock(false) || mV.isEmptyBlock(false) || (mW !=null && mW.isEmptyBlock(false)) ) { ret.examSparsity(); //turn empty dense into sparse @@ -341,9 +326,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose ) - throws DMLRuntimeException - { + public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose ) { //check inputs / outputs if( m1.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -370,9 +353,7 @@ public class LibMatrixMult //System.out.println("TSMM ("+m1.isInSparseFormat()+","+m1.getNumRows()+","+m1.getNumColumns()+","+m1.getNonZeros()+","+leftTranspose+") in "+time.stop()); } - public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose, int k ) - throws DMLRuntimeException - { + public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose, int k ) { //check inputs / outputs if( m1.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -421,9 +402,7 @@ public class LibMatrixMult //System.out.println("TSMM k="+k+" ("+m1.isInSparseFormat()+","+m1.getNumRows()+","+m1.getNumColumns()+","+m1.getNonZeros()+","+leftTranspose+") in "+time.stop()); } - public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, MatrixBlock ret1, MatrixBlock ret2 ) - throws DMLRuntimeException - { + public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, MatrixBlock ret1, MatrixBlock ret2 ) { //check inputs / outputs if( pm1.isEmptyBlock(false) || m2.isEmptyBlock(false) ) return; @@ -457,9 +436,7 @@ public class LibMatrixMult // "("+m2.isInSparseFormat()+","+m2.getNumRows()+","+m2.getNumColumns()+","+m2.getNonZeros()+") in "+time.stop()); } - public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, MatrixBlock ret1, MatrixBlock ret2, int k) - throws DMLRuntimeException - { + public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, MatrixBlock ret1, MatrixBlock ret2, int k) { //check inputs / outputs if( pm1.isEmptyBlock(false) || m2.isEmptyBlock(false) ) return; @@ -502,9 +479,7 @@ public class LibMatrixMult // "("+m2.isInSparseFormat()+","+m2.getNumRows()+","+m2.getNumColumns()+","+m2.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt) - throws DMLRuntimeException - { + public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt) { //check for empty result if( wt==WeightsType.POST && mW.isEmptyBlock(false) || wt==WeightsType.POST_NZ && mX.isEmptyBlock(false) ) { @@ -532,9 +507,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt, int k) - throws DMLRuntimeException - { + public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt, int k) { //check for empty result if( wt==WeightsType.POST && mW.isEmptyBlock(false) || wt==WeightsType.POST_NZ && mX.isEmptyBlock(false) ) { @@ -551,8 +524,7 @@ public class LibMatrixMult //Timing time = new Timing(true); - try - { + try { ExecutorService pool = CommonThreadPool.get(k); ArrayList<MatrixMultWSLossTask> tasks = new ArrayList<>(); int blklen = (int)(Math.ceil((double)mX.rlen/k)); @@ -575,9 +547,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt) - throws DMLRuntimeException - { + public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt) { //check for empty result if( mW.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -606,9 +576,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int k) - throws DMLRuntimeException - { + public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int k) { //check for empty result if( mW.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -666,11 +634,8 @@ public class LibMatrixMult * @param mX matrix X * @param ret result type * @param wt weighted divide matrix multiplication type - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt) - throws DMLRuntimeException - { + public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt) { //check for empty result if( mW.isEmptyBlock(false) || (wt.isLeft() && mU.isEmptyBlock(false)) @@ -717,11 +682,8 @@ public class LibMatrixMult * @param ret result matrix * @param wt weighted divide matrix multiplication type * @param k maximum parallelism - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int k) - throws DMLRuntimeException - { + public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int k) { //check for empty result if( mW.isEmptyBlock(false) || (wt.isLeft() && mU.isEmptyBlock(false)) @@ -777,9 +739,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt) - throws DMLRuntimeException - { + public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt) { //check for empty result if( mW.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -804,9 +764,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt, int k) - throws DMLRuntimeException - { + public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt, int k) { //check for empty result if( mW.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -839,9 +797,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn) - throws DMLRuntimeException - { + public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn) { //check for empty result if( mW.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -870,9 +826,7 @@ public class LibMatrixMult // "("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+") in "+time.stop()); } - public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int k) - throws DMLRuntimeException - { + public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int k) { //check for empty result if( mW.isEmptyBlock(false) ) { ret.examSparsity(); //turn empty dense into sparse @@ -921,9 +875,7 @@ public class LibMatrixMult // optimized matrix mult implementation // ////////////////////////////////////////// - private static void matrixMultDenseDense(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean tm2, boolean pm2, int rl, int ru, int cl, int cu) - throws DMLRuntimeException - { + private static void matrixMultDenseDense(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean tm2, boolean pm2, int rl, int ru, int cl, int cu) { DenseBlock a = m1.getDenseBlock(); DenseBlock b = m2.getDenseBlock(); DenseBlock c = ret.getDenseBlock(); @@ -993,18 +945,14 @@ public class LibMatrixMult } } - private static void matrixMultDenseDenseMVShortRHS(DenseBlock a, DenseBlock b, DenseBlock c, int cd, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultDenseDenseMVShortRHS(DenseBlock a, DenseBlock b, DenseBlock c, int cd, int rl, int ru) { double[] bvals = b.valuesAt(0); double[] cvals = c.valuesAt(0); for( int i=rl; i < ru; i++ ) cvals[i] = dotProduct(a.values(i), bvals, a.pos(i), 0, cd); } - private static void matrixMultDenseDenseMVTallRHS(DenseBlock a, DenseBlock b, DenseBlock c, int cd, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultDenseDenseMVTallRHS(DenseBlock a, DenseBlock b, DenseBlock c, int cd, int rl, int ru) { final int blocksizeI = 32; final int blocksizeK = 2*1024; //16KB vector blocks (L1) double[] bvals = b.valuesAt(0); @@ -1019,9 +967,7 @@ public class LibMatrixMult } } - private static void matrixMultDenseDenseVM(DenseBlock a, DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultDenseDenseVM(DenseBlock a, DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru) { double[] avals = a.valuesAt(0); //vector double[] cvals = c.valuesAt(0); //vector @@ -1044,9 +990,7 @@ public class LibMatrixMult } } - private static void matrixMultDenseDenseMMShortLHS(DenseBlock a, DenseBlock b, DenseBlock c, int m, int n, int cd, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultDenseDenseMMShortLHS(DenseBlock a, DenseBlock b, DenseBlock c, int m, int n, int cd, int rl, int ru) { //cache-conscious parallelization over rows in rhs matrix final int kn = (ru-rl)%4; @@ -1087,9 +1031,7 @@ public class LibMatrixMult } } - private static void matrixMultDenseDenseMMSkinnyRHS(DenseBlock a, DenseBlock b, DenseBlock c, int n2, int cd, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultDenseDenseMMSkinnyRHS(DenseBlock a, DenseBlock b, DenseBlock c, int n2, int cd, int rl, int ru) { //note: prepared rhs input via transpose for: m > n && cd > 64 && n < 64 //however, explicit flag required since dimension change m2 for( int i=rl; i < ru; i++ ) { @@ -1100,9 +1042,7 @@ public class LibMatrixMult } } - private static void matrixMultDenseDenseMM(DenseBlock a, DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru, int cl, int cu) - throws DMLRuntimeException - { + private static void matrixMultDenseDenseMM(DenseBlock a, DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru, int cl, int cu) { //1) Unrolled inner loop (for better instruction-level parallelism) //2) Blocked execution (for less cache trashing in parallel exec) //3) Asymmetric block sizes (for less misses in inner loop, yet blocks in L1/L2) @@ -1160,9 +1100,7 @@ public class LibMatrixMult } } - private static void matrixMultDenseSparse(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean pm2, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultDenseSparse(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean pm2, int rl, int ru) { DenseBlock a = m1.getDenseBlock(); DenseBlock c = ret.getDenseBlock(); int m = m1.rlen; @@ -1227,9 +1165,7 @@ public class LibMatrixMult } } - private static void matrixMultSparseDense(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean pm2, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseDense(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean pm2, int rl, int ru) { SparseBlock a = m1.sparseBlock; DenseBlock b = m2.getDenseBlock(); DenseBlock c = ret.getDenseBlock(); @@ -1282,9 +1218,7 @@ public class LibMatrixMult } } - private static void matrixMultSparseDenseMVShortRHS(SparseBlock a, DenseBlock b, DenseBlock c, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseDenseMVShortRHS(SparseBlock a, DenseBlock b, DenseBlock c, int rl, int ru) { double[] bvals = b.valuesAt(0); double[] cvals = c.valuesAt(0); for( int i=rl; i<ru; i++ ) @@ -1293,9 +1227,7 @@ public class LibMatrixMult a.indexes(i), a.pos(i), 0, a.size(i)); } - private static void matrixMultSparseDenseMVTallRHS(SparseBlock a, DenseBlock b, DenseBlock c, int cd, long xsp, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseDenseMVTallRHS(SparseBlock a, DenseBlock b, DenseBlock c, int cd, long xsp, int rl, int ru) { double[] bvals = b.valuesAt(0); double[] cvals = c.valuesAt(0); @@ -1321,9 +1253,7 @@ public class LibMatrixMult } } - private static void matrixMultSparseDenseVM(SparseBlock a, DenseBlock b, DenseBlock c, int n, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseDenseVM(SparseBlock a, DenseBlock b, DenseBlock c, int n, int rl, int ru) { if( a.isEmpty(0) ) return; @@ -1349,9 +1279,7 @@ public class LibMatrixMult } } - private static void matrixMultSparseDenseMMShortLHS(SparseBlock a, DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseDenseMMShortLHS(SparseBlock a, DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru) { int arlen = a.numRows(); for( int i=0; i<arlen; i++ ) { if( a.isEmpty(i) ) continue; @@ -1391,9 +1319,7 @@ public class LibMatrixMult } } - private static void matrixMultSparseDenseMMSkinnyRHS(SparseBlock a, DenseBlock b, DenseBlock c, int n, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseDenseMMSkinnyRHS(SparseBlock a, DenseBlock b, DenseBlock c, int n, int rl, int ru) { //no blocking since b and c fit into cache anyway for( int i=rl, cix=rl*n; i<ru; i++, cix+=n ) { if( a.isEmpty(i) ) continue; @@ -1414,9 +1340,7 @@ public class LibMatrixMult } } - private static void matrixMultSparseDenseMM(SparseBlock a, DenseBlock b, DenseBlock c, int n, int cd, long xsp, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseDenseMM(SparseBlock a, DenseBlock b, DenseBlock c, int n, int cd, long xsp, int rl, int ru) { //blocksizes to fit blocks of B (dense) and several rows of A/C in common L2 cache size, //while blocking A/C for L1/L2 yet allowing long scans (2 pages) in the inner loop over j //in case of almost ultra-sparse matrices, we cannot ensure the blocking for the rhs and @@ -1464,9 +1388,7 @@ public class LibMatrixMult } } - private static void matrixMultSparseSparse(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean pm2, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultSparseSparse(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, boolean pm2, int rl, int ru) { SparseBlock a = m1.sparseBlock; SparseBlock b = m2.sparseBlock; DenseBlock c = ret.getDenseBlock(); @@ -1570,11 +1492,8 @@ public class LibMatrixMult * @param ret result matrix * @param rl row lower bound * @param ru row upper bound - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void matrixMultUltraSparse(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultUltraSparse(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int rl, int ru) { final boolean leftUS = m1.isUltraSparse() || (m1.isUltraSparse(false) && !m2.isUltraSparse()); final int m = m1.rlen; @@ -1754,9 +1673,7 @@ public class LibMatrixMult } } - private static void matrixMultTransposeSelfDense( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose, int rl, int ru ) - throws DMLRuntimeException - { + private static void matrixMultTransposeSelfDense( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose, int rl, int ru ) { //2) transpose self matrix multiply dense // (compute only upper-triangular matrix due to symmetry) DenseBlock a = m1.getDenseBlock(); @@ -1909,9 +1826,7 @@ public class LibMatrixMult } } - private static void matrixMultTransposeSelfSparse( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose, int rl, int ru ) - throws DMLRuntimeException - { + private static void matrixMultTransposeSelfSparse( MatrixBlock m1, MatrixBlock ret, boolean leftTranspose, int rl, int ru ) { //2) transpose self matrix multiply sparse // (compute only upper-triangular matrix due to symmetry) SparseBlock a = m1.sparseBlock; @@ -2026,9 +1941,7 @@ public class LibMatrixMult } } - private static void matrixMultPermuteDense(MatrixBlock pm1, MatrixBlock m2, MatrixBlock ret1, MatrixBlock ret2, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultPermuteDense(MatrixBlock pm1, MatrixBlock m2, MatrixBlock ret1, MatrixBlock ret2, int rl, int ru) { double[] a = pm1.getDenseBlockValues(); DenseBlock b = m2.getDenseBlock(); DenseBlock c = ret1.getDenseBlock(); @@ -2461,9 +2374,7 @@ public class LibMatrixMult ret.quickSetValue(0, 0, wsloss); } - private static void addMatrixMultWSLossNoWeightCorrection(MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, int k) - throws DMLRuntimeException - { + private static void addMatrixMultWSLossNoWeightCorrection(MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, int k) { MatrixBlock tmp1 = new MatrixBlock(mU.clen, mU.clen, false); MatrixBlock tmp2 = new MatrixBlock(mU.clen, mU.clen, false); matrixMultTransposeSelf(mU, tmp1, true, k); @@ -2473,9 +2384,7 @@ public class LibMatrixMult dotProduct(tmp1.getDenseBlockValues(), tmp2.getDenseBlockValues(), mU.clen*mU.clen))); } - private static void matrixMultWSigmoidDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultWSigmoidDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) { DenseBlock w = mW.getDenseBlock(); DenseBlock c = ret.getDenseBlock(); DenseBlock u = mU.getDenseBlock(); @@ -2515,9 +2424,7 @@ public class LibMatrixMult } } - private static void matrixMultWSigmoidSparseDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultWSigmoidSparseDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) { SparseBlock w = mW.sparseBlock; SparseBlock c = ret.sparseBlock; DenseBlock u = mU.getDenseBlock(); @@ -2545,9 +2452,7 @@ public class LibMatrixMult } } - private static void matrixMultWSigmoidGeneric (MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultWSigmoidGeneric (MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) { final int n = mW.clen; final int cd = mU.clen; @@ -2590,9 +2495,7 @@ public class LibMatrixMult } } - private static void matrixMultWDivMMDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) - throws DMLRuntimeException - { + private static void matrixMultWDivMMDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) { final boolean basic = wt.isBasic(); final boolean left = wt.isLeft(); final boolean mult = wt.isMult(); @@ -2643,9 +2546,7 @@ public class LibMatrixMult } } - private static void matrixMultWDivMMSparseDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) - throws DMLRuntimeException - { + private static void matrixMultWDivMMSparseDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) { final boolean basic = wt.isBasic(); final boolean left = wt.isLeft(); final boolean mult = wt.isMult(); @@ -2744,9 +2645,7 @@ public class LibMatrixMult } } - private static void matrixMultWDivMMGeneric(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) - throws DMLRuntimeException - { + private static void matrixMultWDivMMGeneric(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) { final boolean basic = wt.isBasic(); final boolean left = wt.isLeft(); final boolean mult = wt.isMult(); @@ -2930,9 +2829,7 @@ public class LibMatrixMult ret.quickSetValue(0, 0, wceval); } - private static void matrixMultWuMMDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultWuMMDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) { DenseBlock w = mW.getDenseBlock(); DenseBlock c = ret.getDenseBlock(); DenseBlock u = mU.getDenseBlock(); @@ -2971,9 +2868,7 @@ public class LibMatrixMult } } - private static void matrixMultWuMMSparseDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultWuMMSparseDense(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) { SparseBlock w = mW.sparseBlock; SparseBlock c = ret.sparseBlock; DenseBlock u = mU.getDenseBlock(); @@ -2999,9 +2894,7 @@ public class LibMatrixMult } } - private static void matrixMultWuMMGeneric (MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) - throws DMLRuntimeException - { + private static void matrixMultWuMMGeneric (MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) { final int n = mW.clen; final int cd = mU.clen; boolean flagmult = (wt==WUMMType.MULT); @@ -3600,9 +3493,7 @@ public class LibMatrixMult c[cix+k2] += b.quickGetValue(bix, k2) * wtmp; } - private static double wumm( final double wij, double[] u, double[] v, final int uix, final int vix, final boolean flagmult, ValueFunction fn, final int len ) - throws DMLRuntimeException - { + private static double wumm( final double wij, double[] u, double[] v, final int uix, final int vix, final boolean flagmult, ValueFunction fn, final int len ) { //compute dot product over ui vj double uvij = dotProduct(u, v, uix, vix, len); @@ -3613,9 +3504,7 @@ public class LibMatrixMult return flagmult ? wij * cval : wij / cval; } - private static double wumm( final double wij, MatrixBlock u, MatrixBlock v, final int uix, final int vix, final boolean flagmult, ValueFunction fn, final int len ) - throws DMLRuntimeException - { + private static double wumm( final double wij, MatrixBlock u, MatrixBlock v, final int uix, final int vix, final boolean flagmult, ValueFunction fn, final int len ) { //compute dot product over ui vj double uvij = dotProductGeneric(u, v, uix, vix, len); @@ -3694,9 +3583,7 @@ public class LibMatrixMult return nnz; } - private static MatrixBlock prepMatrixMultTransposeSelfInput( MatrixBlock m1, boolean leftTranspose ) - throws DMLRuntimeException - { + private static MatrixBlock prepMatrixMultTransposeSelfInput( MatrixBlock m1, boolean leftTranspose ) { MatrixBlock ret = m1; if( !leftTranspose && m1.sparse && m1.rlen > 1) //X%*%t(X) SPARSE MATRIX @@ -3750,9 +3637,7 @@ public class LibMatrixMult && OptimizerUtils.getSparsity(m2.rlen, m2.clen, m2.nonZeros)<1.0); } - private static MatrixBlock prepMatrixMultRightInput( MatrixBlock m1, MatrixBlock m2 ) - throws DMLRuntimeException - { + private static MatrixBlock prepMatrixMultRightInput( MatrixBlock m1, MatrixBlock m2 ) { MatrixBlock ret = m2; //transpose if dense-dense, skinny rhs matrix (not vector), and memory guarded by output @@ -3884,8 +3769,7 @@ public class LibMatrixMult } @Override - public Object call() throws DMLRuntimeException - { + public Object call() { //setup target index ranges int rl = _pm2c ? 0 : _rl; int ru = _pm2c ? _m1.rlen : _ru; @@ -3925,9 +3809,7 @@ public class LibMatrixMult private int _rl = -1; private int _ru = -1; - protected MatrixMultChainTask( MatrixBlock mX, MatrixBlock mV, MatrixBlock mW, ChainType ct, int rl, int ru ) - throws DMLRuntimeException - { + protected MatrixMultChainTask( MatrixBlock mX, MatrixBlock mV, MatrixBlock mW, ChainType ct, int rl, int ru ) { _m1 = mX; _m2 = mV; _m3 = mW; @@ -3937,8 +3819,7 @@ public class LibMatrixMult } @Override - public double[] call() throws DMLRuntimeException - { + public double[] call() { //thread-local allocation for partial aggregation MatrixBlock ret = new MatrixBlock(1, _m1.clen, false); ret.allocateDenseBlock(); @@ -3973,7 +3854,7 @@ public class LibMatrixMult } @Override - public Object call() throws DMLRuntimeException { + public Object call() { if( _m1.sparse ) matrixMultTransposeSelfSparse(_m1, _ret, _left, _rl, _ru); else @@ -4002,8 +3883,7 @@ public class LibMatrixMult } @Override - public Object call() throws DMLRuntimeException - { + public Object call() { if( _m2.sparse ) matrixMultPermuteSparse(_pm1, _m2, _ret1, _ret2, _rl, _ru); else if( _ret1.sparse ) @@ -4026,9 +3906,7 @@ public class LibMatrixMult private int _rl = -1; private int _ru = -1; - protected MatrixMultWSLossTask(MatrixBlock mX, MatrixBlock mU, MatrixBlock mV, MatrixBlock mW, WeightsType wt, int rl, int ru) - throws DMLRuntimeException - { + protected MatrixMultWSLossTask(MatrixBlock mX, MatrixBlock mU, MatrixBlock mV, MatrixBlock mW, WeightsType wt, int rl, int ru) { _mX = mX; _mU = mU; _mV = mV; @@ -4043,8 +3921,7 @@ public class LibMatrixMult } @Override - public Double call() throws DMLRuntimeException - { + public Double call() { if( !_mX.sparse && !_mU.sparse && !_mV.sparse && (_mW==null || !_mW.sparse) && !_mX.isEmptyBlock() && !_mU.isEmptyBlock() && !_mV.isEmptyBlock() && (_mW==null || !_mW.isEmptyBlock())) @@ -4070,9 +3947,7 @@ public class LibMatrixMult private int _rl = -1; private int _ru = -1; - protected MatrixMultWSigmoidTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) - throws DMLRuntimeException - { + protected MatrixMultWSigmoidTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) { _mW = mW; _mU = mU; _mV = mV; @@ -4083,8 +3958,7 @@ public class LibMatrixMult } @Override - public Long call() throws DMLRuntimeException - { + public Long call() { //core weighted square sum mm computation if( !_mW.sparse && !_mU.sparse && !_mV.sparse && !_mU.isEmptyBlock() && !_mV.isEmptyBlock() ) matrixMultWSigmoidDense(_mW, _mU, _mV, _ret, _wt, _rl, _ru); @@ -4111,9 +3985,7 @@ public class LibMatrixMult private int _cl = -1; private int _cu = -1; - protected MatrixMultWDivTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) - throws DMLRuntimeException - { + protected MatrixMultWDivTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, int cl, int cu) { _mW = mW; _mU = mU; _mV = mV; @@ -4127,8 +3999,7 @@ public class LibMatrixMult } @Override - public Long call() throws DMLRuntimeException - { + public Long call() { //core weighted div mm computation boolean scalarX = _wt.hasScalar(); if( !_mW.sparse && !_mU.sparse && !_mV.sparse && (_mX==null || !_mX.sparse || scalarX) && !_mU.isEmptyBlock() && !_mV.isEmptyBlock() ) @@ -4156,9 +4027,7 @@ public class LibMatrixMult private int _rl = -1; private int _ru = -1; - protected MatrixMultWCeTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, double eps, WCeMMType wt, int rl, int ru) - throws DMLRuntimeException - { + protected MatrixMultWCeTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, double eps, WCeMMType wt, int rl, int ru) { _mW = mW; _mU = mU; _mV = mV; @@ -4173,8 +4042,7 @@ public class LibMatrixMult } @Override - public Double call() throws DMLRuntimeException - { + public Double call() { //core weighted cross entropy mm computation if( !_mW.sparse && !_mU.sparse && !_mV.sparse && !_mU.isEmptyBlock() && !_mV.isEmptyBlock() ) matrixMultWCeMMDense(_mW, _mU, _mV, _eps, _ret, _wt, _rl, _ru); @@ -4199,9 +4067,7 @@ public class LibMatrixMult private int _rl = -1; private int _ru = -1; - protected MatrixMultWuTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) - throws DMLRuntimeException - { + protected MatrixMultWuTask(MatrixBlock mW, MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) { _mW = mW; _mU = mU; _mV = mV; @@ -4213,8 +4079,7 @@ public class LibMatrixMult } @Override - public Long call() throws DMLRuntimeException - { + public Long call() { //core weighted square sum mm computation if( !_mW.sparse && !_mU.sparse && !_mV.sparse && !_mU.isEmptyBlock() && !_mV.isEmptyBlock() ) matrixMultWuMMDense(_mW, _mU, _mV, _ret, _wt, _fn, _rl, _ru); http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java index 4eb284e..c0922da 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java @@ -30,7 +30,6 @@ import org.apache.sysml.api.DMLScript; import org.apache.sysml.conf.ConfigurationManager; import org.apache.sysml.conf.DMLConfig; import org.apache.sysml.hops.OptimizerUtils; -import org.apache.sysml.runtime.DMLRuntimeException; import org.apache.sysml.utils.NativeHelper; import org.apache.sysml.utils.Statistics; @@ -61,13 +60,12 @@ public class LibMatrixNative * @param m2 rhs matrix block * @param ret output matrix block * @param k number of threads - * @throws DMLRuntimeException if error occurs */ - public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int k) throws DMLRuntimeException { + public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int k) { matrixMult(m1, m2, ret, k, true); } - public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int k, boolean examSparsity) throws DMLRuntimeException { + public static void matrixMult(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, int k, boolean examSparsity) { // Sanity check: k = k <= 0 ? NativeHelper.getMaxNumThreads() : k; @@ -125,9 +123,8 @@ public class LibMatrixNative * @param filter filter * @param outputBlock output of convolution * @param params convolution parameters - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void conv2d(MatrixBlock input, MatrixBlock filter, MatrixBlock outputBlock, ConvolutionParameters params) throws DMLRuntimeException { + public static void conv2d(MatrixBlock input, MatrixBlock filter, MatrixBlock outputBlock, ConvolutionParameters params) { LibMatrixDNN.checkInputsConv2d(input, filter, outputBlock, params); params.numThreads = params.numThreads <= 0 ? NativeHelper.getMaxNumThreads() : params.numThreads; if(NativeHelper.isNativeLibraryLoaded() && !input.isInSparseFormat() && !filter.isInSparseFormat()) { @@ -202,9 +199,8 @@ public class LibMatrixNative * @param dout errors from next layer * @param outputBlock output errors * @param params convolution parameters - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void conv2dBackwardFilter(MatrixBlock input, MatrixBlock dout, MatrixBlock outputBlock, ConvolutionParameters params) throws DMLRuntimeException { + public static void conv2dBackwardFilter(MatrixBlock input, MatrixBlock dout, MatrixBlock outputBlock, ConvolutionParameters params) { LibMatrixDNN.checkInputsConv2dBackwardFilter(input, dout, outputBlock, params); params.numThreads = params.numThreads <= 0 ? NativeHelper.getMaxNumThreads() : params.numThreads; if(NativeHelper.isNativeLibraryLoaded() && !dout.isInSparseFormat() && !input.isInSparseFormat()) { @@ -239,9 +235,8 @@ public class LibMatrixNative * @param dout errors from next layer * @param outputBlock output errors * @param params convolution parameters - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static void conv2dBackwardData(MatrixBlock filter, MatrixBlock dout, MatrixBlock outputBlock, ConvolutionParameters params) throws DMLRuntimeException { + public static void conv2dBackwardData(MatrixBlock filter, MatrixBlock dout, MatrixBlock outputBlock, ConvolutionParameters params) { LibMatrixDNN.checkInputsConv2dBackwardData(filter, dout, outputBlock, params); params.numThreads = params.numThreads <= 0 ? NativeHelper.getMaxNumThreads() : params.numThreads; if(NativeHelper.isNativeLibraryLoaded() && !dout.isInSparseFormat() && !filter.isInSparseFormat()) { http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java index 2c9f476..33a14b8 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java @@ -21,7 +21,6 @@ package org.apache.sysml.runtime.matrix.data; import java.util.Arrays; -import org.apache.sysml.runtime.DMLRuntimeException; import org.apache.sysml.runtime.functionobjects.Builtin; import org.apache.sysml.runtime.functionobjects.Equals; import org.apache.sysml.runtime.functionobjects.GreaterThan; @@ -113,9 +112,7 @@ public class LibMatrixOuterAgg } - public static int[] prepareRowIndices(int iCols, double vmb[], BinaryOperator bOp, AggregateUnaryOperator uaggOp) - throws DMLRuntimeException - { + public static int[] prepareRowIndices(int iCols, double vmb[], BinaryOperator bOp, AggregateUnaryOperator uaggOp) { return (isRowIndexMax(uaggOp)?prepareRowIndicesMax(iCols, vmb, bOp):prepareRowIndicesMin(iCols, vmb, bOp)); } @@ -145,9 +142,8 @@ public class LibMatrixOuterAgg * @param vmb ? * @param bOp binary operator * @return array of maximum row indices - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static int[] prepareRowIndicesMax(int iCols, double vmb[], BinaryOperator bOp) throws DMLRuntimeException + public static int[] prepareRowIndicesMax(int iCols, double vmb[], BinaryOperator bOp) { int[] vixCumSum = null; int[] vix = new int[iCols]; @@ -225,9 +221,8 @@ public class LibMatrixOuterAgg * @param vmb ? * @param bOp binary operator * @return array of minimum row indices - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - public static int[] prepareRowIndicesMin(int iCols, double vmb[], BinaryOperator bOp) throws DMLRuntimeException + public static int[] prepareRowIndicesMin(int iCols, double vmb[], BinaryOperator bOp) { int[] vixCumSum = null; int[] vix = new int[iCols]; @@ -302,9 +297,7 @@ public class LibMatrixOuterAgg } } - public static void aggregateMatrix(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, int[] bvi, BinaryOperator bOp, AggregateUnaryOperator uaggOp) - throws DMLRuntimeException - { + public static void aggregateMatrix(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, int[] bvi, BinaryOperator bOp, AggregateUnaryOperator uaggOp) { // compute unary aggregate outer chain if(isRowIndexMax(uaggOp)) { @@ -370,14 +363,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRowSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRowSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int cnt = (ai == 0) ? agg0: sumRowSumLtGeColSumGtLe(ai, bv, bOp); @@ -392,14 +381,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRowSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRowSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int cnt = (ai == 0) ? agg0: sumRowSumGtLeColSumLtGe(ai, bv, bOp); @@ -415,14 +400,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRowSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRowSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumEqNe(0.0, bv, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int cnt = (ai == 0) ? agg0: sumEqNe(ai, bv, bOp); @@ -437,11 +418,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaColSumLtGe(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaColSumLtGe(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, BinaryOperator bOp) { if (in1Val.isInSparseFormat()) s_uaColSumLtGe(in1Val, outVal, bv, bOp); else @@ -455,11 +433,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaColSumGtLe(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaColSumGtLe(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, BinaryOperator bOp) { if (in1Val.isInSparseFormat()) s_uaColSumGtLe(in1Val, outVal, bv, bOp); else @@ -474,11 +449,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaColSumEqNe(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaColSumEqNe(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, BinaryOperator bOp) { if (in1Val.isInSparseFormat()) s_uaColSumEqNe(in1Val, outVal, bv, bOp); else @@ -493,14 +465,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int cnt = (ai == 0) ? agg0: sumRowSumLtGeColSumGtLe(ai, bv, bOp); @@ -516,11 +484,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp); int m = in.rlen; @@ -540,14 +505,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumEqNe(0.0, bv, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int cnt = (ai == 0) ? agg0: sumEqNe(ai, bv, bOp); @@ -564,14 +525,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMLt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMLt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uarimaxLt(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uarimaxLt(ai, bv, bvi, bOp); @@ -586,11 +543,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMLe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMLe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uarimaxLe(0.0, bv, bvi, bOp); int m = in.rlen; @@ -608,11 +562,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMGt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMGt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uarimaxGt(0.0, bv, bvi, bOp); int m = in.rlen; @@ -631,14 +582,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMGe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMGe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uarimaxGe(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uarimaxGe(ai, bv, bvi, bOp); @@ -654,14 +601,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMEq(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMEq(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uarimaxEq(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uarimaxEq(ai, bv, bvi, bOp); @@ -678,11 +621,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMNe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMNe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uarimaxNe(0.0, bv, bvi, bOp); int m = in.rlen; @@ -701,14 +641,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMinLt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMinLt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uariminLt(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uariminLt(ai, bv, bvi, bOp); @@ -723,14 +659,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMinLe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMinLe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uariminLe(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uariminLe(ai, bv, bvi, bOp); @@ -745,14 +677,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMinGt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMinGt(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uariminGt(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uariminGt(ai, bv, bvi, bOp); @@ -768,11 +696,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMinGe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMinGe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uariminGe(0.0, bv, bvi, bOp); int m = in.rlen; @@ -791,14 +716,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMinEq(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMinEq(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uariminEq(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uariminEq(ai, bv, bvi, bOp); @@ -815,14 +736,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void uaRIMinNe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void uaRIMinNe(MatrixBlock in, MatrixBlock out, double[] bv, int[] bvi, BinaryOperator bOp) { int ind0 = uariminNe(0.0, bv, bvi, bOp); int m = in.rlen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(i, 0); int ind = (ai == 0) ? ind0: uariminNe(ai, bv, bvi, bOp); @@ -838,15 +755,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void d_uaColSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, - BinaryOperator bOp) - throws DMLRuntimeException - { + private static void d_uaColSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp); int m = in.clen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(0, i); int cnt = (ai == 0) ? agg0: sumRowSumGtLeColSumLtGe(ai, bv, bOp); @@ -861,11 +773,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void s_uaColSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void s_uaColSumLtGe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp); //allocate and initialize output values (not indices) @@ -899,14 +808,10 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void d_uaColSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void d_uaColSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp); int m = in.clen; - for( int i=0; i<m; i++ ) { double ai = in.quickGetValue(0, i); int cnt = (ai == 0) ? agg0: sumRowSumLtGeColSumGtLe(ai, bv, bOp); @@ -921,11 +826,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void s_uaColSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void s_uaColSumGtLe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp); //allocate and initialize output values (not indices) @@ -959,11 +861,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void d_uaColSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void d_uaColSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumEqNe(0.0, bv, bOp); int m = in.clen; @@ -981,11 +880,8 @@ public class LibMatrixOuterAgg * @param out output matrix block * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static void s_uaColSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static void s_uaColSumEqNe(MatrixBlock in, MatrixBlock out, double[] bv, BinaryOperator bOp) { int agg0 = sumEqNe(0.0, bv, bOp); //allocate and initialize output values (not indices) @@ -1020,14 +916,10 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int sumRowSumGtLeColSumLtGe(double value, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int sumRowSumGtLeColSumLtGe(double value, double[] bv, BinaryOperator bOp) { int ix = Arrays.binarySearch(bv, value); int cnt = 0; - if( ix >= 0 ){ //match, scan to next val while( ix > 0 && value==bv[ix-1]) --ix; ix++; //Readjust index to match subsenquent index calculation. @@ -1050,11 +942,8 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int sumRowSumLtGeColSumGtLe(double value, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int sumRowSumLtGeColSumGtLe(double value, double[] bv, BinaryOperator bOp) { int ix = Arrays.binarySearch(bv, value); int cnt = 0; @@ -1078,11 +967,8 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int sumEqNe(double value, double[] bv, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int sumEqNe(double value, double[] bv, BinaryOperator bOp) { int ix = Arrays.binarySearch(bv, value); int cnt = 0; @@ -1105,11 +991,8 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uarimaxEq(double value, double[] bv, int bvi[], BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uarimaxEq(double value, double[] bv, int bvi[], BinaryOperator bOp) { int ix = Arrays.binarySearch(bv, value); int ixMax = bv.length; @@ -1125,13 +1008,9 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uarimaxNe(double value, double[] bv, int bvi[], BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uarimaxNe(double value, double[] bv, int bvi[], BinaryOperator bOp) { int ixMax = bv.length; - if( bv[bv.length-1] == value ) ixMax = bvi[0]+1; return ixMax; @@ -1144,11 +1023,8 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uarimaxGt(double value, double[] bv, int bvi[], BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uarimaxGt(double value, double[] bv, int bvi[], BinaryOperator bOp) { int ixMax = bv.length; if(value <= bv[0] || value > bv[bv.length-1]) @@ -1168,21 +1044,15 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uarimaxGe(double value, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uarimaxGe(double value, double[] bv, int[] bvi, BinaryOperator bOp) { int ixMax = bv.length; - if(value < bv[0] || value >= bv[bv.length-1]) return ixMax; - int ix = Arrays.binarySearch(bv, value); if(ix < 0) ix = Math.abs(ix)-2; ixMax = bvi[ix]+1; - return ixMax; } @@ -1193,21 +1063,15 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uarimaxLt(double value, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uarimaxLt(double value, double[] bv, int[] bvi, BinaryOperator bOp) { int ixMax = bv.length; - if(value < bv[0] || value >= bv[bv.length-1]) return ixMax; - int ix = Arrays.binarySearch(bv, value); if (ix < 0) ix = Math.abs(ix)-2; ixMax = bvi[ix]+1; - return ixMax; } @@ -1217,21 +1081,15 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uarimaxLe(double value, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uarimaxLe(double value, double[] bv, int[] bvi, BinaryOperator bOp) { int ixMax = bv.length; - if(value <= bv[0] || value > bv[bv.length-1]) return ixMax; - int ix = Arrays.binarySearch(bv, value); if(ix < 0) ix = Math.abs(ix)-1; ixMax = bvi[ix]+1; - return ixMax; } @@ -1242,13 +1100,9 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uariminEq(double value, double[] bv, int bvi[], BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uariminEq(double value, double[] bv, int bvi[], BinaryOperator bOp) { int ixMin = 1; - if(value == bv[0]) ixMin = bvi[0]+1; return ixMin; @@ -1261,13 +1115,9 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uariminNe(double value, double[] bv, int bvi[], BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uariminNe(double value, double[] bv, int bvi[], BinaryOperator bOp) { int ixMin = 1; - if( bv[0] != value ) ixMin = bvi[0]+1; return ixMin; @@ -1280,20 +1130,14 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uariminGt(double value, double[] bv, int bvi[], BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uariminGt(double value, double[] bv, int bvi[], BinaryOperator bOp) { int ixMin = 1; - if(value <= bv[0] || value > bv[bv.length-1]) return ixMin; - int ix = Arrays.binarySearch(bv, value); ix = Math.abs(ix)-1; ixMin = bvi[ix]+1; - return ixMin; } @@ -1304,21 +1148,15 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uariminGe(double value, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uariminGe(double value, double[] bv, int[] bvi, BinaryOperator bOp) { int ixMin = 1; - if(value <= bv[0] || value > bv[bv.length-1]) return ixMin; - int ix = Arrays.binarySearch(bv, value); if(ix < 0) ix = Math.abs(ix)-1; ixMin = bvi[ix-1]+1; - return ixMin; } @@ -1329,21 +1167,15 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uariminLt(double value, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uariminLt(double value, double[] bv, int[] bvi, BinaryOperator bOp) { int ixMin = 1; - if(value < bv[0] || value >= bv[bv.length-1]) return ixMin; - int ix = Arrays.binarySearch(bv, value); if (ix < 0) ix = Math.abs(ix)-2; ixMin = bvi[ix]+1; - return ixMin; } @@ -1353,21 +1185,15 @@ public class LibMatrixOuterAgg * @param value ? * @param bv ? * @param bOp binary operator - * @throws DMLRuntimeException if DMLRuntimeException occurs */ - private static int uariminLe(double value, double[] bv, int[] bvi, BinaryOperator bOp) - throws DMLRuntimeException - { + private static int uariminLe(double value, double[] bv, int[] bvi, BinaryOperator bOp) { int ixMin = 1; - if(value < bv[0] || value > bv[bv.length-1]) return ixMin; - int ix = Arrays.binarySearch(bv, value); if (ix < 0) ix = Math.abs(ix)-1; ixMin = bvi[ix]+1; - return ixMin; }
