You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2016/01/05 17:04:16 UTC
[2/3] incubator-systemml git commit: Performance dense sparse-safe
unary block operations (single loop, nnz)
Performance dense sparse-safe unary block operations (single loop, nnz)
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/e80f94b2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/e80f94b2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/e80f94b2
Branch: refs/heads/master
Commit: e80f94b22819634fd96c9e1dcd7da143244d9b23
Parents: 87980ce
Author: Matthias Boehm <mb...@us.ibm.com>
Authored: Mon Jan 4 13:40:58 2016 -0800
Committer: Matthias Boehm <mb...@us.ibm.com>
Committed: Mon Jan 4 21:08:53 2016 -0800
----------------------------------------------------------------------
.../apache/sysml/runtime/matrix/data/MatrixBlock.java | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/e80f94b2/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java b/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
index afc4788..7b20502 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
@@ -3085,14 +3085,11 @@ public class MatrixBlock extends MatrixValue implements Externalizable
double[] c = ret.denseBlock;
//unary op, incl nnz maintenance
- for( int i=0, ix=0; i<m; i++ ) {
- for( int j=0; j<n; j++, ix++ ) {
- c[ix] = op.fn.execute(a[ix]);
- if( c[ix] != 0 )
- ret.nonZeros++;
- }
- }
-
+ int len = m*n;
+ for( int i=0; i<len; i++ ) {
+ c[i] = op.fn.execute(a[i]);
+ ret.nonZeros += (c[i] != 0) ? 1 : 0;
+ }
}
}