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 2017/11/15 03:02:36 UTC

[2/2] systemml git commit: [MINOR] Performance sparse cbind/rbind (shallow copy on empty rhs)

[MINOR] Performance sparse cbind/rbind (shallow copy on empty rhs)

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

Branch: refs/heads/master
Commit: 5df6ab6dd3f2d879a98d5adcc7dd98fba6245cf2
Parents: 27cabbc
Author: Matthias Boehm <mb...@gmail.com>
Authored: Tue Nov 14 18:13:45 2017 -0800
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Tue Nov 14 18:45:01 2017 -0800

----------------------------------------------------------------------
 .../java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java  | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/5df6ab6d/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 91248d2..f176c9a 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
@@ -3545,6 +3545,7 @@ public class MatrixBlock extends MatrixValue implements CacheBlock, Externalizab
 		final int m = cbind ? rlen : rlen+Arrays.stream(that).mapToInt(mb -> mb.rlen).sum();
 		final int n = cbind ? clen+Arrays.stream(that).mapToInt(mb -> mb.clen).sum() : clen;
 		final long nnz = nonZeros+Arrays.stream(that).mapToLong(mb -> mb.nonZeros).sum();
+		boolean shallowCopy = (nonZeros == nnz);
 		boolean sp = evalSparseFormatInMemory(m, n, nnz);
 		
 		//init result matrix 
@@ -3577,7 +3578,7 @@ public class MatrixBlock extends MatrixValue implements CacheBlock, Externalizab
 			//adjust sparse rows if required
 			result.allocateSparseRowsBlock();
 			//allocate sparse rows once for cbind
-			if( cbind && nnz > rlen && result.getSparseBlock() instanceof SparseBlockMCSR ) {
+			if( cbind && nnz > rlen && !shallowCopy && result.getSparseBlock() instanceof SparseBlockMCSR ) {
 				SparseBlock sblock = result.getSparseBlock();
 				for( int i=0; i<result.rlen; i++ ) {
 					final int row = i; //workaround for lambda compile issue
@@ -3588,7 +3589,7 @@ public class MatrixBlock extends MatrixValue implements CacheBlock, Externalizab
 			}
 			
 			//core append operation
-			result.appendToSparse(this, 0, 0);
+			result.appendToSparse(this, 0, 0, !shallowCopy);
 			if( cbind ) {
 				for(int i=0, off=clen; i<that.length; i++) {
 					result.appendToSparse(that[i], 0, off);