Repository: incubator-systemml
Updated Branches:
  refs/heads/master 576eb4e96 -> 686363208


[SYSTEMML-1589] Check for the empty block case

Closes #487.


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

Branch: refs/heads/master
Commit: 6863632088c8d0b548a17413692b399d512a991d
Parents: 576eb4e
Author: Niketan Pansare <npan...@us.ibm.com>
Authored: Sun May 7 19:34:12 2017 -0800
Committer: Niketan Pansare <npan...@us.ibm.com>
Committed: Sun May 7 20:34:12 2017 -0700

----------------------------------------------------------------------
 .../cp/ConvolutionCPInstruction.java            | 22 ++++++++++----------
 .../sysml/runtime/matrix/data/LibMatrixDNN.java |  2 +-
 2 files changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/68636320/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
 
b/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
index d428ed9..1331d64 100644
--- 
a/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
+++ 
b/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
@@ -226,7 +226,7 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                MatrixBlock outputBlock =  new MatrixBlock(input.getNumRows(), 
input.getNumColumns(), 
                        LibMatrixDNN.SUPPORTS_SPARSE_OUTPUTS && 
(input.isInSparseFormat() || dout.isInSparseFormat()));
                
-               if( !input.isEmptyBlock() && !dout.isEmptyBlock() ) {
+               if( !input.isEmpty() && !dout.isEmpty() ) {
                        outputBlock.allocateDenseOrSparseBlock();
                        LibMatrixDNN.reluBackward(input, dout, outputBlock, 
_numThreads);
                }
@@ -246,10 +246,10 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                        throw new DMLRuntimeException("Expected the number of 
columns of bias matrix to be 1, but found " + bias.getNumColumns());
                }
                
-               if(input.isEmptyBlock() && bias.isEmptyBlock()) {
+               if(input.isEmpty() && bias.isEmpty()) {
                        outputBlock = new MatrixBlock(input.getNumRows(), 
input.getNumColumns(), true);
                }
-               else if(bias.isEmptyBlock()) {
+               else if(bias.isEmpty()) {
                        outputBlock = new MatrixBlock(input);
                }
                else {
@@ -274,7 +274,7 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                        throw new DMLRuntimeException("Expected the number of 
columns of bias matrix to be 1, but found " + bias.getNumColumns());
                }
                
-               if(bias.isEmptyBlock()) {
+               if(bias.isEmpty()) {
                        // Anything multiplied by zero is zero
                        outputBlock = new MatrixBlock(input.getNumRows(), 
input.getNumColumns(), true);
                }
@@ -342,7 +342,7 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                ConvolutionParameters params = new ConvolutionParameters(N, C, 
H, W, K, R, S, stride_h, stride_w, pad_h, pad_w, _numThreads);
                params.enableNative = NativeHelper.isNativeLibraryLoaded();
                if (instOpcode.equalsIgnoreCase("maxpooling") || 
instOpcode.equalsIgnoreCase("relu_maxpooling")) {
-                       if(matBlock.isEmptyBlock()) {
+                       if(matBlock.isEmpty()) {
                                outputBlock = new MatrixBlock(N, C*P*Q, true);
                        }
                        else {
@@ -354,7 +354,7 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                }
                else if (instOpcode.equalsIgnoreCase("maxpooling_backward") || 
instOpcode.equalsIgnoreCase("relu_maxpooling_backward")) {
                        MatrixBlock dout = ec.getMatrixInput(_in2.getName());
-                       if(matBlock.isEmptyBlock() || dout.isEmptyBlock()) {
+                       if(matBlock.isEmpty() || dout.isEmpty()) {
                                outputBlock = new MatrixBlock(N, C*H*W, true);
                        }
                        else {
@@ -368,7 +368,7 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                }
                else if (instOpcode.equalsIgnoreCase("conv2d")) {
                        MatrixBlock filter = ec.getMatrixInput(_in2.getName());
-                       if(filter.isEmptyBlock() || matBlock.isEmptyBlock()) {
+                       if(filter.isEmpty() || matBlock.isEmpty()) {
                                outputBlock = new MatrixBlock(N, K*P*Q, true);
                        }
                        else {
@@ -383,12 +383,12 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                else if (instOpcode.equalsIgnoreCase("conv2d_bias_add")) {
                        MatrixBlock filter = ec.getMatrixInput(_in3.getName());
                        MatrixBlock bias = ec.getMatrixInput(_in2.getName());
-                       if((filter.isEmptyBlock() || matBlock.isEmptyBlock()) 
&& bias.isEmptyBlock()) {
+                       if((filter.isEmpty() || matBlock.isEmpty()) && 
bias.isEmpty()) {
                                outputBlock = new MatrixBlock(N, K*P*Q, true);
                        }
                        else {
                                outputBlock = getDenseOutputBlock(N, K*P*Q);
-                               if(!bias.isEmptyBlock()) {
+                               if(!bias.isEmpty()) {
                                        params.bias = bias;
                                }
                                if(params.enableNative && 
!isFilterSparse(filter) && !matBlock.isInSparseFormat())
@@ -401,7 +401,7 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                }
                else if (instOpcode.equalsIgnoreCase("conv2d_backward_filter")) 
{
                        MatrixBlock dout = ec.getMatrixInput(_in2.getName());
-                       if(dout.isEmptyBlock() || matBlock.isEmptyBlock()) {
+                       if(dout.isEmpty() || matBlock.isEmpty()) {
                                outputBlock = new MatrixBlock(K, C*R*S, true);
                        }
                        else {
@@ -415,7 +415,7 @@ public class ConvolutionCPInstruction extends 
UnaryCPInstruction
                }
                else if (instOpcode.equalsIgnoreCase("conv2d_backward_data")) {
                        MatrixBlock dout = ec.getMatrixInput(_in2.getName());
-                       if(dout.isEmptyBlock() || matBlock.isEmptyBlock()) {
+                       if(dout.isEmpty() || matBlock.isEmpty()) {
                                outputBlock = new MatrixBlock(N, C * H * W, 
true);
                        }
                        else {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/68636320/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java
index 6a43917..e4d3ba2 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java
@@ -1138,7 +1138,7 @@ public class LibMatrixDNN {
                                        else {
                                                // In all other cases, perform 
im2col in Java + matmult (either native or java).
                                                MatrixBlock im2ColOutBlock = 
_im2ColOutBlocks.remove();
-                                               double [] temp = 
_params.input1.isInSparseFormat() ? new double[_params.input1.getNumColumns()] 
: null;
+                                               double [] temp = 
(_params.input1.isInSparseFormat() || _params.input1.denseBlock == null) ? new 
double[_params.input1.getNumColumns()] : null;
                                                for(int n = _rl; n < _ru; n++) 
                                                        doLoopedIm2ColConv2d(n, 
im2ColOutBlock, _params, temp);
                                                
_im2ColOutBlocks.add(im2ColOutBlock);

Reply via email to