[SYSTEMML-382] Fix sparse-safe scalar operations over sparse blocks

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

Branch: refs/heads/master
Commit: 9cb7d553fc0d91798a063e0ccceb2d4a51f8f52b
Parents: 205cfd3
Author: Matthias Boehm <[email protected]>
Authored: Fri Jan 22 16:44:55 2016 -0800
Committer: Matthias Boehm <[email protected]>
Committed: Sat Jan 23 16:08:00 2016 -0800

----------------------------------------------------------------------
 .../apache/sysml/runtime/matrix/data/LibMatrixBincell.java   | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/9cb7d553/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixBincell.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixBincell.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixBincell.java
index 5428c96..47a46d4 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixBincell.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixBincell.java
@@ -924,7 +924,7 @@ public class LibMatrixBincell
                        SparseBlock a = m1.sparseBlock;
                        SparseBlock c = ret.sparseBlock;
                        
-                       for(int r=0; r<Math.min(m1.rlen, 
m1.sparseBlock.numRows()); r++) {
+                       for(int r=0; r<Math.min(m1.rlen, a.numRows()); r++) {
                                if( !a.isEmpty(r) )
                                {
                                        int apos = a.pos(r);
@@ -955,12 +955,10 @@ public class LibMatrixBincell
                                                if( op.fn instanceof Multiply 
|| op.fn instanceof Multiply2 
                                                        || op.fn instanceof 
Power2  )
                                                {
-                                                       c.allocate(r, alen, -1);
-                                                       //TODO perf sparse block
-                                                       //c[r] = new 
SparseRow(alen);
+                                                       c.allocate(r, alen, 
ret.clen);
                                                }
                                                
-                                               for(int j=0; j<alen; j++) {
+                                               for(int j=apos; j<apos+alen; 
j++) {
                                                        double val = 
op.executeScalar(avals[j]);
                                                        ret.appendValue(r, 
aix[j], val);
                                                }

Reply via email to