You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemds.apache.org by mb...@apache.org on 2026/09/29 13:37:14 UTC
(systemds) branch main updated: [SYSTEMDS-3855] Use of VectorAPI in sparse-sparse matmult kernels
This is an automated email from the ASF dual-hosted git repository.
mboehm7 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/systemds.git
The following commit(s) were added to refs/heads/main by this push:
new 7a5e18c5b4 [SYSTEMDS-3855] Use of VectorAPI in sparse-sparse matmult kernels
7a5e18c5b4 is described below
commit 7a5e18c5b4d10e01a16de83bab2a7bf26855cd1d
Author: Elman Jahangiri <El...@outlook.de>
AuthorDate: Tue Sep 29 15:35:23 2026 +0200
[SYSTEMDS-3855] Use of VectorAPI in sparse-sparse matmult kernels
Closes #2553.
---
.../sysds/runtime/matrix/data/LibMatrixMult.java | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixMult.java b/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixMult.java
index 52953b9c54..9fa0ba51e3 100644
--- a/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixMult.java
+++ b/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixMult.java
@@ -2371,7 +2371,7 @@ public class LibMatrixMult
int blen = b.size(aix[k]);
int[] bix = b.indexes(aix[k]);
double[] bvals = b.values(aix[k]);
- vectMultiplyAdd(avals[k], bvals, cvals, bix, bpos, 0, blen);
+ vectMultiplyAddScatter(avals[k], bvals, cvals, bix, bpos, 0, blen);
}
}
@@ -2389,7 +2389,7 @@ public class LibMatrixMult
for(int k = apos; k < apos+alen; k++) {
int aixk = aix[k];
if( b.isEmpty(aixk) ) continue;
- vectMultiplyAdd(avals[k], b.values(aixk), tmp,
+ vectMultiplyAddScatter(avals[k], b.values(aixk), tmp,
b.indexes(aixk), b.pos(aixk), 0, b.size(aixk));
hitNonEmpty = true;
}
@@ -2420,7 +2420,7 @@ public class LibMatrixMult
for(int k = apos; k < apos+alen; k++) {
int aixk = aix[k];
if( b.isEmpty(aixk) ) continue;
- vectMultiplyAdd(avals[k], b.values(aixk), cvals,
+ vectMultiplyAddScatter(avals[k], b.values(aixk), cvals,
b.indexes(aixk), b.pos(aixk), cix, b.size(aixk));
}
}
@@ -2452,7 +2452,7 @@ public class LibMatrixMult
int k = curk[i-bi] + apos;
for(; k < apos+alen && aix[k]<bkmin; k++) {
if( b.isEmpty(aix[k]) ) continue;
- vectMultiplyAdd(avals[k], b.values(aix[k]), cvals,
+ vectMultiplyAddScatter(avals[k], b.values(aix[k]), cvals,
b.indexes(aix[k]), b.pos(aix[k]), cix, b.size(aix[k]));
}
curk[i-bi] = k - apos;
@@ -4621,15 +4621,9 @@ public class LibMatrixMult
}
}
- private static void vectMultiplyAddScatter(
- final double aval,
- double[] b,
- double[] c,
- int[] bix,
- final int bi,
- final int ci,
- final int len
- ) {
+ private static void vectMultiplyAddScatter(final double aval,
+ double[] b, double[] c, int[] bix, final int bi, final int ci, final int len)
+ {
final int bn = len % vLen;
// Scalar tail for remaining elements