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

Reply via email to