The orthogonalisation proceeds by constructing the band-overlap matrix, performing a Cholesky decomposition of this matrix to determine an orthogonalising transformation, and then applying this transformation. Both the construction of the band-overlap matrix and the applications of the transform are distributed over G-vectors and k-points, with very little communication required. The Cholesky decomposition is performed on a single node per k-point and the result broadcast, so is not distributed over G-vectors.
The subspace diagonalisation also requires a band-overlap matrix to be
constructed, though this time it is between bands drawn from two
different wavefunctions ( and
). This matrix is
then diagonalised to determine a diagonalising rotation, and the
rotation applied to both the input wavefunctions. The first and last
stages are distributed naturally over G- and k-points, but the
diagonalisation itself is performed on a single node per k-point.