In addition to the -projectors themselves, the inner products
of the projectors with the wavefunction bands are also
non-distributed. These so-called
data are
computed and stored in the wavefunction, wavefunction_slice and band
data types for efficiency. For ease of use the array is stored in
unpacked form, but this is undesirable for large systems since the
addition of a single new species of ion can increase the size of the
array dramatically.
Because the
array has data for each band, it is
naturally distributed over the band-group, as implemented in this dCSE
project. However the projector dimension is not distributed, and it is
not distributed over the gvector-group; thus the array could be
distributed by projector index over the gvector-group to further
reduce the memory overhead and improve scaling.
Both of these proposed distributions would save memory and improve
run-time. However care must be taken in the implementation, as
projector data would be distributed differently depending on whether
it was the projectors themselves (which are currently distributed over
the gvector-group and would be then distributed over the band-group
too), or the
arrays (which are already
distributed over the bands, and would now be distributed over
gvector-group as well).