A significant amount of progress towards the new BlockDistMatrix class, which will be used for interfacing with ScaLAPACK and, perhaps, manual implementations of routines which noticeably benefit from blocked distributions (e.g., LU with partial pivoting and Hessenberg Schur decompositions).
Deleting a large amount of redundant [Block]DistMatrix constructor/destructor code and extending the BlockDistMatrix scaffolding to [MD,STAR] and [STAR,MD].
Removing several unnecessary and easily-mixed-up constructors for DistMatrix and BlockDistMatrix. The Grid argument to [Locked]Attach for DistMatrix was also moved before the (dependent) alignment parameters.
Adding the scaffolding for the [STAR,MC] distribution to the BlockDistMatrix class.
Implementing Align{Cols,Rows}With in a general manner and further extending BlockDistMatrix.
Fixing a mistake in the recent alignment simplifications and implementing a general version of (potentially unaligned) redistributions between matrices distributed in the same fashion over the same grid.
Extending BlockDistMatrix scaffolding to [STAR,VC] and [STAR,VR].
Finishing scaffolding for BlockDistMatrix.
Simplifying Gaussian and Uniform implementations and extending them to BlockDistMatrix. Simple BlockDistMatrix drivers were added, but several more redistribution routines still need to be added.
Adding a preliminary ScaLAPACK configuration check and breaking off some of the configuration checks into include files in cmake/
BlockDistMatrix now supports printing.
More scaffolding working towards redistributing from a DistMatrix to a BlockDistMatrix.
Once GBDM::Translate is written, there should be a functioning interface between DistMatrix and BlockDistMatrix.
Adding the ability to redistribute between DistMatrix and BlockDistMatrix [MC,MR] distributions and fixing [Block]DistMatrix so that {Dist,Cross,Redundant}Size return the correct values for processes outside of the process grid. As soon as Grid is extended to support translating ranks from DistComm to VCComm for processes outside of the grid, it will be possible to extend the current BlockDistMatrix unaligned redistribution routine to support redistributions between arbitrary distributions with congruent viewing communicators.
Updating references, namespacing preprocessor definitions and macros with 'ELEM', and taking another step towards support for ScaLAPACK's Hessenberg QR algorithm implementations.
The ScaLAPACK interface has now been successfully used.
Making Hessenberg Schur decomposition LAPACK/ScaLAPACK wrappers more consistent. A bug was noticed in the pdhseqr wrappers for very small matrices, but I am not yet sure whether or not it is a bug in ScaLAPACK or my wrappers.
Enabling simple support for calls to ScaLAPACK's upper-Hessenberg QR algorithm, but more bugs in P{S,D}HSEQR were unfortunately observed. Please see the commits in github.com/poulson/scalapack for details.
Switched test/core/BasicBlockDistMatrix to complex arithmetic, which will call the non-AED version of ScaLAPACK's QR algorithm and avoid known bugs.
Generalizing the ScaLAPACK wrappers to support the non-AED QR algorithm for real arithmetic.