Repository: incubator-systemml Updated Branches: refs/heads/master e455a5599 -> e3f79680b
[SYSTEMML-381] Fix robustness sparse block data converters (empty rows) Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/da7edc9a Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/da7edc9a Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/da7edc9a Branch: refs/heads/master Commit: da7edc9a6e2fe5d3f2fe63ee5edfba3df68c4bd9 Parents: e455a55 Author: Matthias Boehm <[email protected]> Authored: Thu Jan 21 00:00:03 2016 -0800 Committer: Matthias Boehm <[email protected]> Committed: Thu Jan 21 08:59:07 2016 -0800 ---------------------------------------------------------------------- .../runtime/matrix/data/SparseBlockCOO.java | 20 +++++++++++--------- .../runtime/matrix/data/SparseBlockCSR.java | 18 ++++++++++-------- .../runtime/matrix/data/SparseBlockMCSR.java | 14 ++++++++------ 3 files changed, 29 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/da7edc9a/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 792d0d8..c499b31 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 @@ -85,15 +85,17 @@ public class SparseBlockCOO extends SparseBlock _size = (int)size; for( int i=0, pos=0; i<_rlen; i++ ) { - int apos = sblock.pos(i); - int alen = sblock.size(i); - int[] aix = sblock.indexes(i); - double[] avals = sblock.values(i); - for( int j=apos; j<apos+alen; j++ ) { - _rindexes[pos] = i; - _cindexes[pos] = aix[j]; - _values[pos] = avals[j]; - pos++; + if( !sblock.isEmpty(i) ) { + int apos = sblock.pos(i); + int alen = sblock.size(i); + int[] aix = sblock.indexes(i); + double[] avals = sblock.values(i); + for( int j=apos; j<apos+alen; j++ ) { + _rindexes[pos] = i; + _cindexes[pos] = aix[j]; + _values[pos] = avals[j]; + pos++; + } } } } http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/da7edc9a/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 bb17c83..fc3a56f 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 @@ -87,14 +87,16 @@ public class SparseBlockCSR extends SparseBlock _size = (int)size; for( int i=0, pos=0; i<rlen; i++ ) { - int apos = sblock.pos(i); - int alen = sblock.size(i); - int[] aix = sblock.indexes(i); - double[] avals = sblock.values(i); - for( int j=apos; j<apos+alen; j++ ) { - _indexes[pos] = aix[j]; - _values[pos] = avals[j]; - pos++; + if( !sblock.isEmpty(i) ) { + int apos = sblock.pos(i); + int alen = sblock.size(i); + int[] aix = sblock.indexes(i); + double[] avals = sblock.values(i); + for( int j=apos; j<apos+alen; j++ ) { + _indexes[pos] = aix[j]; + _values[pos] = avals[j]; + pos++; + } } _ptr[i+1]=pos; } http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/da7edc9a/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockMCSR.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockMCSR.java b/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockMCSR.java index dc4ffe7..378a3f4 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockMCSR.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/SparseBlockMCSR.java @@ -51,12 +51,14 @@ public class SparseBlockMCSR extends SparseBlock else { _rows = new SparseRow[sblock.numRows()]; for( int i=0; i<_rows.length; i++ ) { - int apos = sblock.pos(i); - int alen = sblock.size(i); - _rows[i] = new SparseRow(alen); - _rows[i].setSize(alen); - System.arraycopy(sblock.indexes(i), apos, _rows[i].indexes(), 0, alen); - System.arraycopy(sblock.values(i), apos, _rows[i].values(), 0, alen); + if( !sblock.isEmpty(i) ) { + int apos = sblock.pos(i); + int alen = sblock.size(i); + _rows[i] = new SparseRow(alen); + _rows[i].setSize(alen); + System.arraycopy(sblock.indexes(i), apos, _rows[i].indexes(), 0, alen); + System.arraycopy(sblock.values(i), apos, _rows[i].values(), 0, alen); + } } } }
