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 2018/06/12 02:52:25 UTC
systemml git commit: [SYSTEMML-2382] Fix robustness sparse-dense
matrix mult (special case)
Repository: systemml
Updated Branches:
refs/heads/master 97f684d2b -> 111b29787
[SYSTEMML-2382] Fix robustness sparse-dense matrix mult (special case)
This patch fixes runtime failures of sparse-dense block matrix
multiplication for the special case of short left-hand-side inputs with
sparsity skew or short right-hand-side. The issue showed up for cases
where the row lower bound (wrt right-hand-side) of a thread was larger
than the maximum non-zero column index.
Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/111b2978
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/111b2978
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/111b2978
Branch: refs/heads/master
Commit: 111b29787dc458c0926afc43e1b8235f2b87d06e
Parents: 97f684d
Author: Matthias Boehm <mb...@gmail.com>
Authored: Mon Jun 11 19:52:39 2018 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Mon Jun 11 19:52:39 2018 -0700
----------------------------------------------------------------------
.../java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/systemml/blob/111b2978/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
index 31f827b..0545ff0 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
@@ -1301,7 +1301,7 @@ public class LibMatrixMult
int k2 = (ru==cd) ? alen : a.posFIndexGTE(i, ru);
k2 = (k2>=0) ? apos+k2 : apos+alen;
- if( k1==k2 || b.isContiguous(aix[k1], aix[k2-1]) ) {
+ if( k1<apos+alen && b.isContiguous(aix[k1], aix[k2-1]) ) {
double[] bvals = b.values(aix[k1]);
int base = aix[k1]*n - b.pos(aix[k1]);
//rest not aligned to blocks of 4 rows