Simplifying view-type properties for Matrix and removing the unnecessary 'virtual' qualifier on the Matrix destructor.
Adding the (surprisingly-missing) ability to easily update the diagonal of [MC,MR] matrices.
Adding missing diagonal-update functionality to DistMatrix specializations which only supported setting/getting diagonals. Which distributions support such functionality is still inconsistent, but hopefully not for long.
Adding some of the missing diagonal manipulation routines and preparing for a simpler approach.
Fixed bugs in Matrix::Conjugate and several diagonal alignments, and implemented a much more general version of the diagonal manipulation and alignment routines by using compile-time mapping from distribution pairs to their corresponding diagonal redistribution. This required switching routines of the form d.AlignWithDiagonal( A, offset ) to the form A.ForceDiagonalAlign( d, offset ) since multiple different distribution pairs can generate the same diagonal distribution (e.g., [MC,MR], [MR,MC], [MD,* ], and [* ,MD] all result in [MD,* ]). Compilation of the (now templated over distribution) AbstractDistMatrix is currently quite slow; the next step is to introduce an intermediate derived class between AbstractDistMatrix and DistMatrix and to start avoiding more redundant routines through more compile-time distribution mappings.
Adding intermediary GeneralDistMatrix for implementing routines which work for all distributions but need access to the particular distribution.
Switching to better SumScatter abstractions. The Transpose/Adjoint versions still need to be converted, and the operator= routines as well.
Avoiding need for a templated member function of GeneralDistMatrix.
Abstracting RowAllGather operation. ColAllGather and AllGather will soon follow.
Finishing implementation of [{Col,Row}]AllGather.
Adding partial row and column allgathers.
Switching to a simpler scheme for summing the local portions of distributed matrices over a communicator.
Abstracting a few routines for forming subsets of existing distributed matrices.
Added Partial{Row,Col}FilterFrom
Fixing a few mistakes in the last couple of commits and adding PartialColAllToAll, as well as generalizing tests-core-DistMatrix to use random alignments.
Adding PartialRowAllToAll
Made DistMatrix more consistent by moving all {Transpose,Adjoint}From and related routines into GeneralDistMatrix. A long undiscovered bug in unaligned [MC,MR] -> [* ,MR] redistributions was fixed, a recently introduced bug in PartialRowAllToAll was fixed, missing alignment constraints for views were added, and it is no longer possible to free the alignment constraints of a view.
Avoiding complex MPI by default due to two students having problems with OpenMPI's complex support. Changes to AbstractDistMatrix which were meant to be in the last commit are being packaged into this one.
Avoiding shadowed 'k' variable in HermitianTridiag/{L,U}Pan, avoiding the Intel compiler's problems with implementing DistMatrix member functions using template aliases, avoiding the Intel compiler's missing std::chrono::steady_clock, and avoiding the Intel compiler's missing std::uniform_{real,int}_distribution.
Fixing typo for std::chrono::high_resolution_clock.