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);