next up previous contents
Next: Theoretical Background Up: The INCAR File Previous: Using the GW routines   Contents

Not enough memory, what to do

First of all, the memory requirements of the serial version can be estimated using the makeparam utility (see Sec. 5.23). At present, there is however no way to estimate the memory requirements of the parallel version.

In fact, it might be difficult to run huge jobs on "thin" T3E or SP2 nodes. Most tables (pseudopotentials etc.) and the executable must be held on all nodes (10-20 Mbytes). In addition one complex array of the size $N_{\rm bands} \times N_{\rm bands}$ is allocated on each node; during dynamic simulation even up to three such arrays are allocated. Upon reading and writing the charge density, a complex array that can hold all data points of the charge density is allocated ( 8*NGXF*NGYF*NGZF). Finally, three such arrays are allocated (and deallocated) during the charge density symmetrisation (the charge density symmetrisation takes usually the hugest amount of memory.) All other data are distributed among all nodes.

The following things can be tried to reduce the memory requirements on each node.

It should be mentioned that VASP relies heavily on dynamic memory allocation (ALLOCATE and DEALLOCATE). As far as we know there is no memory leakage (ALLOCATE without DEALLOCATE), however unfortunately it is impossible to be entirely sure that no leakage exists. It should be mentioned that some users have observed that the code is growing during dynamic simulations on the T3E. This is however most likely due to a ``problematic'' dynamic memory management of the f90 runtime system and not due to programming error in VASP. Unfortunately the dynamic memory subsystems of most f90 compilers are still rather inefficient. As a result it might happen, that the memory becomes more and more fragmented during the run, so that large pieces of memory can not be allocated. We can only hope for improvements in the dynamic memory management (for instance the introduction of garbage collectors).
next up previous contents
Next: Theoretical Background Up: The INCAR File Previous: Using the GW routines   Contents
Georg Kresse
2007-03-01