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;
+			}			
 		}
 	}