The current implementation assumes all matrices to be dense (i.e. fully filled), but this isn't always the case. For example, in out uses, a ranking isn't defined for the majority of participant-dogroup pairs.
As such, it may be worthwhile to implement a sparse matrix format based on a non-sequential data array (Matrix#data) or even Compressed Row Storage. But the colReduce and rowReduce steps may be difficult or impossible to optimize on such a datastructure.