07/24/2013: Elemental 0.81


Documentation: [HTML] [PDF]


  • Matrix sign and square-root functions
  • Reverse Cholesky and RQ factorizations
  • Progress towards general-purpose spectral divide and conquer
  • Lyapunov, Sylvester, and (algebraic) Ricatti solvers
  • {Hermitian,Normal}FromEVD routines
  • Greatly simplified packed Householder application, e.g., qr::ApplyQ
  • “[o ,o ]”, or “CIRC,CIRC” distribution for easily moving between sequential and distributed matrices
  • MakeConsistent() allows non-owning processes to synchronize after the distributed matrix state changed
  • An instrumented Gemm example driver to benchmark Allgather and local Gemm performance
  • Improved experimental F90 interface

Fixed Bugs

  • Avoiding accidental allocation when shrinking matrix with ResizeTo
  • Fixed subtle bug when repeatedly calling routine such as QR(A,t)


  • Git SHA1 now stored in config file, and relevant version and build information can be printed with –version and –build command-line arguments
  • Print and Write are now members of io/
  • Modularized SWIG interface (Michael Grant)
  • Extended set of view types so that local matrix manipulations are safer (Michael Grant)
  • EnsurePMRRR() is now used so that stubs are always available
  • std::bad_alloc’s are now handled a bit more carefully
  • Eliminated elem-dummy-lib, experimental-c, and experimental-f90
  • Greatly simplified exception handling
  • Greatly simplified Householder transform usages
  • FreeAlignments() is now almost-never needed
  • Simplified MpiMap
  • Include guards are now prefixed with “ELEM” in order to avoid collisions


  • The cmake/elemvariables Makefile include is still behind and is known to not yet work when Qt5 support is enabled (as well as in various other corner cases). There would be value in laying out precisely what development cycle is expected of Elemental users (e.g., if/how to install with CMake, what the easiest way to compile and link a new executable is).


  • Wolfgang Bangerth for suggesting the MpiMap simplification
  • Scott Rabidoux for mentioning several mistakes in the eigensolver documentation