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/22 20:37:04 UTC
incubator-systemml git commit: [SYSTEMML-382] Performance sparse
matrix block deserialization / reset
Repository: incubator-systemml
Updated Branches:
refs/heads/master 659680d32 -> a312decb7
[SYSTEMML-382] Performance sparse matrix block deserialization / reset
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/a312decb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/a312decb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/a312decb
Branch: refs/heads/master
Commit: a312decb7d80da4b2aaf8ce163514aeb9f470ac9
Parents: 659680d
Author: Matthias Boehm <mb...@us.ibm.com>
Authored: Thu Jan 21 21:35:48 2016 -0800
Committer: Matthias Boehm <mb...@us.ibm.com>
Committed: Fri Jan 22 11:35:46 2016 -0800
----------------------------------------------------------------------
.../sysml/runtime/matrix/data/MatrixBlock.java | 20 ++++++--------------
.../runtime/matrix/data/SparseBlockCOO.java | 12 +++++++-----
.../runtime/matrix/data/SparseBlockCSR.java | 10 ++++++----
3 files changed, 19 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/a312decb/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 6e22d37..22c6347 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
@@ -1962,21 +1962,13 @@ public class MatrixBlock extends MatrixValue implements Externalizable
}
else //default deserialize
{
- //TODO perf sparse block
-
- for(int r=0; r<rlen; r++)
- {
- int nr=in.readInt();
- if(nr==0)
- {
- if(!sparseBlock.isEmpty(r))
- sparseBlock.reset(r, estimatedNNzsPerRow, clen);
- continue;
+ for(int r=0; r<rlen; r++) {
+ int rnnz = in.readInt(); //row nnz
+ if( rnnz > 0 ) {
+ sparseBlock.reset(r, rnnz, clen);
+ for(int j=0; j<rnnz; j++) //col index/value pairs
+ sparseBlock.append(r, in.readInt(), in.readDouble());
}
-
- sparseBlock.reset(r, nr, clen);
- for(int j=0; j<nr; j++)
- sparseBlock.append(r, in.readInt(), in.readDouble());
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/a312decb/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCOO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCOO.java b/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCOO.java
index c499b31..eea0754 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCOO.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCOO.java
@@ -166,11 +166,13 @@ public class SparseBlockCOO extends SparseBlock
int pos = pos(r);
int len = size(r);
- //overlapping array copy (shift rhs values left)
- System.arraycopy(_rindexes, pos+len, _rindexes, pos, _size-(pos+len));
- System.arraycopy(_cindexes, pos+len, _cindexes, pos, _size-(pos+len));
- System.arraycopy(_values, pos+len, _values, pos, _size-(pos+len));
- _size -= len;
+ if( len > 0 ) {
+ //overlapping array copy (shift rhs values left)
+ System.arraycopy(_rindexes, pos+len, _rindexes, pos, _size-(pos+len));
+ System.arraycopy(_cindexes, pos+len, _cindexes, pos, _size-(pos+len));
+ System.arraycopy(_values, pos+len, _values, pos, _size-(pos+len));
+ _size -= len;
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/a312decb/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCSR.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCSR.java b/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCSR.java
index fc3a56f..139cec3 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCSR.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockCSR.java
@@ -168,10 +168,12 @@ public class SparseBlockCSR extends SparseBlock
int pos = pos(r);
int len = size(r);
- //overlapping array copy (shift rhs values left)
- System.arraycopy(_indexes, pos+len, _indexes, pos, _size-(pos+len));
- System.arraycopy(_values, pos+len, _values, pos, _size-(pos+len));
- _size -= len;
+ if( len > 0 ) {
+ //overlapping array copy (shift rhs values left)
+ System.arraycopy(_indexes, pos+len, _indexes, pos, _size-(pos+len));
+ System.arraycopy(_values, pos+len, _values, pos, _size-(pos+len));
+ _size -= len;
+ }
}
@Override