This is an automated email from the ASF dual-hosted git repository.
mboehm7 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git
The following commit(s) were added to refs/heads/master by this push:
new 6308847 [MINOR] Fix compressed OLE matrix-vector operations
6308847 is described below
commit 6308847f9a6dd3c74edd5a3ef9b62fb2ad2d4511
Author: Matthias Boehm <[email protected]>
AuthorDate: Thu Sep 10 13:40:05 2020 +0200
[MINOR] Fix compressed OLE matrix-vector operations
This patch partially fixes an issue with cache-conscious OLE
matrix-vector operations. However, it only fixes the issues for
single-threaded operations, while multi-threaded ops still run into
index out-of-bounds issues on covtype.
---
.../org/apache/sysds/runtime/compress/CompressedMatrixBlock.java | 5 ++++-
.../org/apache/sysds/runtime/compress/colgroup/ColGroupOLE.java | 8 ++++----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git
a/src/main/java/org/apache/sysds/runtime/compress/CompressedMatrixBlock.java
b/src/main/java/org/apache/sysds/runtime/compress/CompressedMatrixBlock.java
index aaf75901..a2336b7 100644
--- a/src/main/java/org/apache/sysds/runtime/compress/CompressedMatrixBlock.java
+++ b/src/main/java/org/apache/sysds/runtime/compress/CompressedMatrixBlock.java
@@ -982,9 +982,12 @@ public class CompressedMatrixBlock extends
AbstractCompressedMatrixBlock {
// uc.rightMultByVector(vector, result, k);
// compute remaining compressed column groups in
parallel
+ // note: OLE needs alignment to segment size, otherwise
wrong entry
ExecutorService pool = CommonThreadPool.get(k);
int rlen = getNumRows();
- int blklen = getAlignedBlockSize((int)
(Math.ceil((double) rlen / k)));
+ int seqsz = CompressionSettings.BITMAP_BLOCK_SZ;
+ int blklen = (int)(Math.ceil((double)rlen/k));
+ blklen += (blklen%seqsz != 0)?seqsz-blklen%seqsz:0;
ArrayList<RightMatrixMultTask> tasks = new
ArrayList<>();
for(int i = 0; i < k & i * blklen < getNumRows(); i++)
tasks.add(
diff --git
a/src/main/java/org/apache/sysds/runtime/compress/colgroup/ColGroupOLE.java
b/src/main/java/org/apache/sysds/runtime/compress/colgroup/ColGroupOLE.java
index 44c0c47..6a0d2e0 100644
--- a/src/main/java/org/apache/sysds/runtime/compress/colgroup/ColGroupOLE.java
+++ b/src/main/java/org/apache/sysds/runtime/compress/colgroup/ColGroupOLE.java
@@ -333,13 +333,13 @@ public class ColGroupOLE extends ColGroupOffset {
double val = aval[k];
int bix = apos[k];
- int len = _data[boff + bix];
- int pos = boff + bix + 1;
- // LOG.error("Len: "+pos + " pos: "+bi
+ " ii " + len);
for(int ii = bi; ii < bimax && bix <
blen; ii += blksz) {
// prepare length, start, and
end pos
+ int len = _data[boff + bix];
+ int pos = boff + bix + 1;
+
// compute partial results
- LinearAlgebraUtils.vectAdd(val,
c, _data, pos, ii, Math.min(len, ru));
+ LinearAlgebraUtils.vectAdd(val,
c, _data, pos, ii, Math.min(len,ru));
bix += len + 1;
}