  A parallel implementation of an eigensolver designed for electronic structure
calculations is presented. The method is applicable to computational tasks that
solve a sequence of eigenvalue problems where the solution for a particular
iteration is similar but not identical to the solution from the previous
iteration. Such problems occur frequently when performing electronic structure
calculations in which the eigenvectors are solutions to the Kohn-Sham
equations. The eigenvectors are represented in some type of basis but the
problem sizes are normally too large for direct diagonalization in that basis.
Instead a subspace diagonalization procedure is employed in which matrix
elements of the Hamiltonian operator are generated and the eigenvalues and
eigenvectors of the resulting reduced matrix are obtained using a standard
eigensolver from a package such as LAPACK or SCALAPACK. While this method works
well and is widely used, the standard eigensolvers scale poorly on massively
parallel computer systems for the matrix sizes typical of electronic structure
calculations. We present a new method that utilizes a partitioned folded
spectrum scheme (PFSM) that takes into account the iterative nature of the
problem and performs well on massively parallel systems. Test results for a
range of problems are presented that demonstrate an equivalent level of
accuracy when compared to the standard eigensolvers, while also executing up to
an order of magnitude faster. Unlike O(N) methods, the technique works equally
well for metals and systems with unoccupied orbitals as for insulators and
semiconductors. Timing and accuracy results are presented for a range of
systems, including a 512 atom diamond cell, a cluster of 13 C60 molecules, bulk
copper, a 216 atom silicon cell with a vacancy, using 40 unoccupied
states/atom, and a 4000 atom aluminum supercell.
