5.8 Memory Management and Two-Dimensional Partitioning
219
has two arrays of one-body phases and two arrays of two-body phases. Memory
storage can be decreased by demanding that α < β and γ < δ, inequalities
arising from antisymmetry requirements. By applying m-reversal symmetry, one
can further divide the size of phase matrices by two. Indeed, the SD int |a α |SD i
and SD int |a α a β |SD i phases are straightforward to obtain from those where all
|j m one-body states are replaced by |j − m (see Sect. 5.8.1).
Let us state that the presented memory optimization of the phase matrix is not
applied to the angular momentum operator ˆ
J 2 . It would be inefficient in this case,
because the ˆ
J 2 operator is a function of ˆ
J ± . ˆ
J ± is, in fact, a very sparse one-body
operator, so that the number of phases occurring in J ± is much smaller than those
needed for the Hamiltonian matrix. Thus, the use of Eq. (5.68) when applying ˆ
J 2 ,
where an intermediate Slater determinant would have to be introduced, is hereby not
necessary.
The memory optimization discussed in this section pertained to the full storage
scheme in the Gamow shell model code, in which all the many-body matrix elements
of the Hamiltonian are stored. As the Hamiltonian matrix is sparse, only nonzero
matrix elements and associated indices are retained in memory. Nevertheless, this
scheme becomes quickly inapplicable as memory requirements in the Gamow shell
model grow rapidly with the number of valence nucleons, In fact, this is basically the
only issue related to memory, because the storage of Gamow shell model vectors,
of a few hundreds at most, is negligible compared to the storage of nonzero matrix
elements of the Hamiltonian.
As a matter of fact, the full storage scheme is limited by the aggregate memory
space of used computer nodes on parallel machines. Therefore, other storage scheme
have been developed in the Gamow shell model code as an alternative to the full
storage scheme, which are the on-the-fly and partial storage schemes. In the on-thefly scheme, the Hamiltonian matrix is not stored, but, on the contrary, is recalculated
for each ˆ
H times vector operation. While, on the one hand, the storage issues are
of no importance in the on-the-fly scheme, the computation time, on the other hand,
is maximal. This is due to the reconstruction of the Hamiltonian matrix at each
eigensolver iteration.
In the partial storage scheme, one does not store the 2p-2h part of the Hamiltonian
matrix, consisting of two-body matrix elements multiplied by a phase, which
basically form the whole Hamiltonian matrix. Indeed, the remaining part of the
Hamiltonian matrix is made of its diagonal and 1p-1h off-diagonal matrix elements,
which is minute compared to the rest of the Hamiltonian matrix. Moreover,
the number of two-body matrix elements is much smaller than the number of
Hamiltonian matrix elements. Therefore, it is more efficient to store the index of
the two-body matrix element and associated phase in a single integer, instead of
storing the Hamiltonian matrix element itself. The Hamiltonian matrix element is
recovered from a look-up into the array of two-body matrix elements, followed
by a multiplication by its corresponding phase. However, this approach is more
expensive than the full storage scheme because of the search of two-body matrix
elements. Indeed, the array of two-body matrix elements is large and the two-body
Précédent

- 233/514

Suivant