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 <[email protected]>
Authored: Fri Aug 12 12:40:44 2016 -0700
Committer: Matthias Boehm <[email protected]>
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;
                }
        }

Reply via email to