25.2.3 Keyword for the General Memory Specification

Most post-SCF programs (aoforce, ccsdf12, egrad, escf, evib, mpgrad, mpshift, pnoccsd, ricc2, rirpa) in TURBOMOLE read the data group

$maxcor mib per_core

to control the amount of dynamically allocated memory. The integer number (above “500”) one can (optionally) give a SI prefix (kb, mb, gb) or an IEC prefix (kib, mib, gib) to specify the unit. If no unit is specified mib (binary megabytes, i.e. \(1024^2\) bytes) are used.

In addition one can specify a reference for parallel calculations:

per_proc

indicates that the memory is specified per process

per_node

indicates that the memory is specified per computer node, i.e. shared by all processes of the calculation that run on the machine with the same host name

per_core

indicates that the memory is specified per core, i.e. per thread

total

means the specified memory should be divided by all processes and nodes

If not given the specified memory will be used per thread. Note that in release versions before V7.2 the memory was specified per process. For sequential calculations this sub-option has no effect.

If $maxcor is not given 500 MiB per thread will be used as limit for dynamically allocated memory.

Note:

  • $maxcor defines only the memory controled by the electronic structure code. Additional memory can be allocated by the math and MPI libraries linked into the program and by the operating and I/O systems. It is therefore recommended to set $maxcor not higher than to 75% – 85% of the physical core memory that is available for the calculation.

  • Some programs use additional keywords ($incore, $ricore, $ricore_slave, $rpacor) to specify limits for dynamically allocated memory for certain tasks.