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 2016/08/12 19:53:14 UTC
incubator-systemml git commit: [SYSTEMML-812] Fix multi-threaded tsmm
over compressed matrix blocks
Repository: incubator-systemml
Updated Branches:
refs/heads/master bcd71d346 -> b03950c32
[SYSTEMML-812] Fix multi-threaded tsmm over compressed matrix 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/b03950c3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/b03950c3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/b03950c3
Branch: refs/heads/master
Commit: b03950c3283d4020ffd26ef287dc4cd09e50fa95
Parents: bcd71d3
Author: Matthias Boehm <mb...@us.ibm.com>
Authored: Fri Aug 12 12:40:44 2016 -0700
Committer: Matthias Boehm <mb...@us.ibm.com>
Committed: Fri Aug 12 12:40:44 2016 -0700
----------------------------------------------------------------------
.../runtime/compress/CompressedMatrixBlock.java | 24 ++++++++++++--------
1 file changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/b03950c3/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java b/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
index 3913721..fac2461 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
@@ -1168,9 +1168,10 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
try {
ExecutorService pool = Executors.newFixedThreadPool( k );
ArrayList<MatrixMultTransposeTask> tasks = new ArrayList<MatrixMultTransposeTask>();
- int blklen = (int)(Math.ceil((double)clen/(2*k)));
+ int numgrp = _colGroups.size();
+ int blklen = (int)(Math.ceil((double)numgrp/(2*k)));
for( int i=0; i<2*k & i*blklen<clen; i++ )
- tasks.add(new MatrixMultTransposeTask(_colGroups, out, i*blklen, Math.min((i+1)*blklen, clen)));
+ tasks.add(new MatrixMultTransposeTask(_colGroups, out, i*blklen, Math.min((i+1)*blklen, numgrp)));
List<Future<Object>> ret = pool.invokeAll(tasks);
for( Future<Object> tret : ret )
tret.get(); //check for errors
@@ -1330,10 +1331,13 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
/**
*
+ * @param groups
* @param result
+ * @param gl
+ * @param gu
* @throws DMLRuntimeException
*/
- private static void leftMultByTransposeSelf(ArrayList<ColGroup> groups, MatrixBlock result, int cl, int cu)
+ private static void leftMultByTransposeSelf(ArrayList<ColGroup> groups, MatrixBlock result, int gl, int gu)
throws DMLRuntimeException
{
final int numRows = groups.get(0).getNumRows();
@@ -1345,7 +1349,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
//approach: for each colgroup, extract uncompressed columns one at-a-time
//vector-matrix multiplies against remaining col groups
- for( int i=cl; i<cu; i++ )
+ for( int i=gl; i<gu; i++ )
{
//get current group and relevant col groups
ColGroup group = groups.get(i);
@@ -1479,19 +1483,19 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
{
private ArrayList<ColGroup> _groups = null;
private MatrixBlock _ret = null;
- private int _cl = -1;
- private int _cu = -1;
+ private int _gl = -1;
+ private int _gu = -1;
- protected MatrixMultTransposeTask(ArrayList<ColGroup> groups, MatrixBlock ret, int cl, int cu) {
+ protected MatrixMultTransposeTask(ArrayList<ColGroup> groups, MatrixBlock ret, int gl, int gu) {
_groups = groups;
_ret = ret;
- _cl = cl;
- _cu = cu;
+ _gl = gl;
+ _gu = gu;
}
@Override
public Object call() throws DMLRuntimeException {
- leftMultByTransposeSelf(_groups, _ret, _cl, _cu);
+ leftMultByTransposeSelf(_groups, _ret, _gl, _gu);
return null;
}
}