Hello,
So, I wanted to know is there a way to put an upper limit in the total memory usage?
No. Not within Turbomole. But you can set the user limits in your shell. However, the programs will simply be killed if they try to use more than the given limits.
Is there a way to see how much memory is needed for my run before the beginning of the calculation?
No.
You could estimate the required memory:
1. density, fock matrix, DIIS matrices all need N*N/2 * 8 Byte, N number of basis functions,
while the number of basis functions is given in the control file, see keyword $rundimensions
(Example: 4000 cartesian basis functions: {4000*4000/2 * 8 Byte} * 4 = 244 MB )
2. if you look at the output of ridft, there will be a line:
****************************************
Memory allocated for RI-J 72 MByte
****************************************
which gives the amount of memory needed for the RI part
3. plus additional memory that is used during diagonalization, etc. - and that is the most difficult part to determine. Turbomole uses highly optimized linear algebra routines (like BLAS, Lapack, etc.) that are provided by the hardware companies like Intel, IBM, AMD, HP, etc.. Depending on the task to be performed, some of those libraries will need additional memory (or a lot of stack size in case of Intel) which seems to gives better performance, but the user has no control over the exact amount of memory usage any more.
4. UHF calculations need twice as much as RHF runs (all matrices are kept for alpha and beta spin)
(same example as above: C1, approx. 4000 cartesian basis functions, RHF: total of 800 MB in
virtual space, gives about 500-600 MB in physical memory during run time).
With 2 GB per node you should be able to perform calculations in C1 symmetry with RI-DFT for structures with approx. 5000-6000 basis functions or perhaps more.
Regards,
Uwe