Baunsgaard commented on code in PR #2149:
URL: https://github.com/apache/systemds/pull/2149#discussion_r1866806275


##########
src/main/java/org/apache/sysds/runtime/compress/colgroup/ColGroupSDCZeros.java:
##########
@@ -848,23 +848,52 @@ else if(points[c].o < of)
                while(c < points.length && points[c].o < last)
                        c++;
 
-               c = processRow(points, sr, nCol, c, of, 
_data.getIndex(it.getDataIndex()));
+               c = processRowSparse(points, sr, nCol, c, of, 
_data.getIndex(it.getDataIndex()));
 
        }
 
        @Override
        protected void denseSelection(MatrixBlock selection, P[] points, 
MatrixBlock ret, int rl, int ru) {
-               throw new NotImplementedException();
+                               final DenseBlock dr = ret.getDenseBlock();
+                               final int nCol = _colIndexes.size();
+                               final AIterator it = _indexes.getIterator();
+                               final int last = _indexes.getOffsetToLast();
+                               int c = 0;
+                               int of = it.value();
+
+                               while(of < last && c < points.length) {
+                                       if(points[c].o == of) {
+                                               c = processRowDense(points, dr, 
nCol, c, of, _data.getIndex(it.getDataIndex()));
+                                               of = it.next();
+                                                       }
+                                               else if(points[c].o < of)
+                                                               c++;
+                                               else
+                                                       of = it.next();
+                                       }
+                               // increment the c pointer until it is pointing 
at least to last point or is done.
+                                               while(c < points.length && 
points[c].o < last)
+                                                       c++;
+                                               c = processRowDense(points, dr, 
nCol, c, of, _data.getIndex(it.getDataIndex()));
+       }
+
+       private int processRowSparse(P[] points, final SparseBlock sr, final 
int nCol, int c, int of, final int did) {
+               while(c < points.length && points[c].o == of) {
+                       _dict.putSparse(sr, did, points[c].r, nCol, 
_colIndexes);
+                       c++;
+               }
+               return c;
        }
 
-       private int processRow(P[] points, final SparseBlock sr, final int 
nCol, int c, int of, final int did) {
+       private int processRowDense(P[] points, final DenseBlock dr, final int 
nCol, int c, int of, final int did) {
                while(c < points.length && points[c].o == of) {
-                       _dict.put(sr, did, points[c].r, nCol, _colIndexes);
+                       _dict.putDense(dr, did, points[c].r, nCol, _colIndexes);
                        c++;
                }
                return c;
        }
 
+

Review Comment:
   formatting (no double new line)



##########
src/main/java/org/apache/sysds/runtime/compress/colgroup/ColGroupSDCZeros.java:
##########
@@ -848,23 +848,52 @@ else if(points[c].o < of)
                while(c < points.length && points[c].o < last)
                        c++;
 
-               c = processRow(points, sr, nCol, c, of, 
_data.getIndex(it.getDataIndex()));
+               c = processRowSparse(points, sr, nCol, c, of, 
_data.getIndex(it.getDataIndex()));
 
        }
 
        @Override
        protected void denseSelection(MatrixBlock selection, P[] points, 
MatrixBlock ret, int rl, int ru) {
-               throw new NotImplementedException();
+                               final DenseBlock dr = ret.getDenseBlock();

Review Comment:
   Indentation



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@systemds.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to