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;
 		}
 	}