You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by ni...@apache.org on 2017/04/27 03:24:25 UTC
incubator-systemml git commit: [HOTFIX] Bugfix for bias_add and
bias_multiply operations
Repository: incubator-systemml
Updated Branches:
refs/heads/master 2a4e4f8b3 -> 39351749f
[HOTFIX] Bugfix for bias_add and bias_multiply operations
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/39351749
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/39351749
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/39351749
Branch: refs/heads/master
Commit: 39351749f76e2703b9be43d3b08b348a7e115384
Parents: 2a4e4f8
Author: Niketan Pansare <np...@us.ibm.com>
Authored: Wed Apr 26 19:24:09 2017 -0800
Committer: Niketan Pansare <np...@us.ibm.com>
Committed: Wed Apr 26 20:24:09 2017 -0700
----------------------------------------------------------------------
.../sysml/runtime/matrix/data/LibMatrixDNN.java | 39 +++++++++++++++-----
1 file changed, 30 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/39351749/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 8a1a43f..cd88b95 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
@@ -709,26 +709,33 @@ public class LibMatrixDNN {
int K = bias.getNumRows();
int PQ = input.getNumColumns() / K;
- ConvolutionParameters params = new ConvolutionParameters(N, PQ, -1, -1, K, -1, -1, -1, -1, -1, -1, numThreads);
- params.input1 = input;
- params.input2 = bias;
- params.output = outputBlock;
-
if(bias.getNumColumns() != 1 || input.getNumColumns() % K != 0) {
throw new DMLRuntimeException("Incorrect inputs for bias_add: input[" + N + " X " + input.getNumColumns() + "] and bias[" + K + " X " + bias.getNumColumns() + "]");
}
+ double [] outputArray = outputBlock.getDenseBlock();
if(input.isEmptyBlock()) {
- double [] outputArray = outputBlock.getDenseBlock();
for(int n = 0; n < N; n++)
ConvolutionUtils.fillBias(bias, outputArray, n, n+1, N, K, PQ);
}
else {
- runConvTask(TaskType.BiasAdd, params);
+ // Handles both dense and sparse inputs and copies it to dense output
+ outputBlock.copy(input);
+ int index = 0;
+ if(bias.isInSparseFormat())
+ bias.sparseToDense(); // Since bias is extremely small array
+ double [] biasArr = bias.getDenseBlock();
+ for(int n = 0; n < N; n++) {
+ for(int k = 0; k < K; k++) {
+ for(int pq = 0; pq < PQ; pq++, index++) {
+ outputArray[index] += biasArr[k];
+ }
+ }
+ }
}
//post-processing: maintain nnz
- params.output.recomputeNonZeros();
+ outputBlock.recomputeNonZeros();
}
@@ -759,7 +766,21 @@ public class LibMatrixDNN {
}
if(!input.isEmptyBlock() && !bias.isEmptyBlock()) {
- runConvTask(TaskType.BiasMultiply, params);
+ // Handles both dense and sparse inputs and copies it to dense output
+ outputBlock.copy(input);
+ double [] outputArray = outputBlock.getDenseBlock();
+ int index = 0;
+ if(bias.isInSparseFormat())
+ bias.sparseToDense(); // Since bias is extremely small array
+ double [] biasArr = bias.getDenseBlock();
+ for(int n = 0; n < N; n++) {
+ for(int k = 0; k < K; k++) {
+ for(int pq = 0; pq < PQ; pq++, index++) {
+ outputArray[index] *= biasArr[k];
+ }
+ }
+ }
+
//post-processing: maintain nnz
params.output.recomputeNonZeros();
}