[HOTFIX][SYSTEMML-1959] Fix sparse-sparse transpose w/ CSR input

This patch fixes a remaining issue of sparse-sparse transpose related to
the correct handling of sparse blocks in CSR or COO format.

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

Branch: refs/heads/master
Commit: 33559144cd707e324b59ed5ca417e3d5461c2f0a
Parents: a347af3
Author: Matthias Boehm <[email protected]>
Authored: Sun Oct 15 02:42:20 2017 -0700
Committer: Matthias Boehm <[email protected]>
Committed: Sun Oct 15 02:42:20 2017 -0700

----------------------------------------------------------------------
 .../sysml/runtime/matrix/data/LibMatrixReorg.java   | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/33559144/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixReorg.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixReorg.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixReorg.java
index 3ae07c5..dd86c27 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixReorg.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixReorg.java
@@ -859,8 +859,8 @@ public class LibMatrixReorg
                        if( cl > 0 ) {
                                for( int i=bi; i<bimin; i++ )
                                        if( !a.isEmpty(i) ) {
-                                               int pos = a.posFIndexGTE(i, cl);
-                                               ix[i-bi] = (pos>=0) ? pos : 
a.size(i);
+                                               int j = a.posFIndexGTE(i, cl);
+                                               ix[i-bi] = (j>=0) ? j : 
a.size(i);
                                        }
                        }
                        
@@ -868,19 +868,19 @@ public class LibMatrixReorg
                                int bjmin = Math.min(bj+blocksizeJ, cu);
 
                                //core block transpose operation
-                               for( int i=bi, iix=0; i<bimin; i++, iix++ ) {
+                               for( int i=bi; i<bimin; i++ ) {
                                        if( a.isEmpty(i) ) continue;
                                        
                                        int apos = a.pos(i);
                                        int alen = a.size(i);
                                        int[] aix = a.indexes(i);
                                        double[] avals = a.values(i);
-                                       int j = ix[iix]; //last block boundary
-                                       for( ; j<alen && aix[j]<bjmin; j++ ) {
-                                               c.allocate(aix[apos+j], 
ennz2,n2);
-                                               c.append(aix[apos+j], i, 
avals[apos+j]);
+                                       int j = ix[i-bi] + apos; //last block 
boundary
+                                       for( ; j<apos+alen && aix[j]<bjmin; j++ 
) {
+                                               c.allocate(aix[j], ennz2,n2);
+                                               c.append(aix[j], i, avals[j]);
                                        }
-                                       ix[iix] = j; //keep block boundary
+                                       ix[i-bi] = j - apos; //keep block 
boundary
                                }
                        }
                }

Reply via email to