wB97M-(2) calculation failed

Dear all,
My calculation with wB97M-(2) failed. It is a simple sp calculation:
$rem
mem_total 32000
mem_static 16000
jobtype sp
method wB97M-(2)
basis def2-tzvp
$end
When I tried with a small molecule (CH4), it finished successfully. However, when I tried the system I am interested in (140 atoms), if failed with the following error:

wB97M-V orbitals are now ready for the wB97M(2) calculation.
wB97M(2) energy = Exch (0.62194 SRHF + 1.0 LRHF + wB97M(2)_EXCH) +
Corr (wB97M(2)_CORR + 0.34096 MP2 + 0.65904 VV10(b=10))
SCF time: CPU 49897.38 s wall 3286.16 s
SCF energy in the final basis set = -5689.58991609
Total energy in the final basis set = -5689.58991609

Q-Chem fatal error occurred in module 0, line 363:

Logic error in TrnAlg.

Can anyone give me some idea what might be the problem? Thank you very much.
Michael

This sounds like a memory problem in the MP2 code. TrnAlg is in the old Fortran MP2 code, but I see that you are already using a large value of MEM_STATIC. Try also setting AO2MO_DISK to a large value (tens of GB or as much as you have on the node, really.) That said, 140 atoms with a triple-zeta basis set is rather large for MP2.

Had to check, but it seems that double hybrids can run through the RIMP2 code so that’s a much better solution, especially since the (newer) RIMP2 code parallelizes better than the original MP2 code. Here is an example from the set of sample jobs:

$rem
jobtype sp
exchange omegaB97X-2(TQZ)
correlation rimp2
basis cc-pvtz
aux_basis rimp2-cc-pvtz
$end

Actually I did try rimp2 and got exactly the same error:
method wB97M-(2)
basis def2-tzvp
aux_basis rimp2-def2-tzvp

What is the difference between “exchange omegaB97X-2(TQZ)” and “method wB97M-(2)”?

update:

Tried exact input as sample job (using omegaB97X-2(TQZ) and rimp2-cc-pvtz), got same error. Adding “AO2MO_DISK 32000” did not help as well.
After increasing memory, the error code changed: now it showed it is the memory problem.

SCF energy in the final basis set = -5689.58991367
Total energy in the final basis set = -5689.58991367
In TrnAlg: available memory = -2147483648
needed mmory = -1872474166

Q-Chem fatal error occurred in module 0, line 283:

Insufficient memory for semidirect MP2

AO2MO_DISK is in units of Mb so your setting is 32 Gb. With the old MP2 code, we usually try to use a whole node for large MP2 jobs, which for us is 128 Gb, i.e., much larger. (Note that in the old semidirect MP2 code there’s a trade-off between memory and disk so increasing AO2MO_DISK should decrease the memory requirement, at the expense of greater CPU time.) For the RIMP2 version, it’s a big hard for me to diagnose from here. Would you be willing to share an input file? Or if you want to keep it confidential, you could send it to the Q-Chem help email address that is available on the website.

Regarding your previous question (“what is difference between ‘exchange’ and ‘method’ ?”), EXCHANGE=… represents and older way of specifying functionals that aren’t meant to be separated into exchange and correlation components that can be mixed and matched. For example, EXCHANGE=B3LYP used to be how we requested B3LYP (and I think that still works), though it has been replaced more recently with METHOD=B3LYP.

Actually, if you just tell me how many basis functions are in this calculation, I can probably make a guess about how far off your resource estimates are.

Thank you very much for your help.

I ran the calculation on a single local node (32 core cpu, 128GB RAM, 14T HDD). It would be great if I can get some idea how much resource it requires for the calculation.

Here is the full input I used:

$molecule
-4 1
C 1.20725 0.43216 4.86907
C 1.18282 -0.52405 3.67484
O 1.25940 0.00339 2.52751
O 1.18467 -1.74388 3.95183
C 1.75964 2.35585 -1.86538
C 0.98254 1.71948 -0.71386
O 1.62919 0.85131 -0.11989
O -0.14169 2.19840 -0.38601
C 5.44779 -0.43159 -0.31762
C 4.90372 -1.34563 0.81098
O 5.71408 -2.19259 1.22491
O 3.72643 -1.12823 1.20533
Mg 1.71248 -0.97011 0.65797
Mg -1.38041 1.35993 0.98037
P -1.54229 -1.89127 0.01246
P -4.01208 -0.11399 0.17235
P -3.60007 0.60681 3.12038
C -0.94799 -1.42388 -2.57175
O -1.31808 -2.35168 -1.57373
O -1.32748 -3.15358 0.80215
O -5.22347 -0.19395 -0.71071
O -4.02855 2.04995 3.37056
O -0.69285 -0.64461 0.27474
O -2.96304 0.97379 -0.15679
O -3.93202 -0.40796 4.18901
O -3.14726 -1.53350 0.04162
O -4.45611 0.01328 1.70016
O -2.11519 0.58938 2.59209
C 3.47673 -4.39742 -0.15916
C 3.48093 -3.60999 -1.44951
O 3.82667 -4.49367 -2.55734
C 2.13452 -2.91389 -1.81244
O 1.94092 -1.70794 -1.24027
C 2.25268 -2.90783 -3.37548
C 3.00351 -4.19801 -3.67001
O -2.38420 3.38942 1.32031
O 1.21862 -2.80597 1.56108
H 2.28180 0.62370 5.09149
H 0.73767 0.05730 5.79281
H 1.28121 3.24390 -2.30601
H 2.02206 1.59561 -2.61824
H 4.79697 0.41880 -0.56539
H 5.62070 -1.02701 -1.23352
H -1.70215 -0.61274 -2.60191
H 0.07680 -1.06298 -2.38340
H 3.08650 -3.76587 0.65173
H 4.49001 -4.73884 0.11255
H 2.80966 -5.27218 -0.26497
H 4.24027 -2.80924 -1.39763
H 1.31651 -3.64990 -1.57905
H 1.28786 -2.90234 -3.89362
H 2.85568 -2.01948 -3.64285
H 3.63301 -4.14535 -4.59066
H 2.27908 -5.03034 -3.84097
H -3.37189 3.29221 1.36661
H -2.10760 3.35436 2.25507
H 0.28102 -3.04220 1.33510
H 1.19439 -2.52060 2.52270
C -1.34061 4.43242 -3.55992
O -1.70057 5.01151 -2.52563
N -1.67749 3.16741 -3.81642
C -2.47692 2.39540 -2.88445
C -3.80372 3.07228 -2.57331
O -4.34659 3.82927 -3.39085
N -4.29547 2.83761 -1.36634
C -5.58747 3.36084 -0.93316
C -5.60590 4.89617 -0.83519
O -6.65740 5.51597 -1.02158
C -5.97886 2.72810 0.40300
O -5.09656 3.12167 1.44810
N -4.45458 5.50524 -0.56981
C -4.35146 6.97504 -0.52876
C -1.52779 0.88745 6.00137
O -0.85792 0.63787 6.99541
N -1.00465 1.40712 4.90088
C 0.41405 1.74926 4.81329
C 0.64981 2.77618 3.70890
O -0.30655 3.24361 3.07973
N 1.91570 3.12822 3.48645
C 2.27721 4.05912 2.42562
C 2.95207 3.36179 1.24820
O 3.96685 2.69445 1.41287
N 2.39159 3.53764 0.05781
C 2.97977 2.98717 -1.15877
C 3.43751 4.12047 -2.05094
O 2.64073 4.99824 -2.37935
N 4.71291 4.10150 -2.43248
C 5.31729 5.16897 -3.21870
C 6.84185 0.88936 2.56196
O 7.71679 0.06239 2.82078
N 6.27963 1.02504 1.35845
C 6.71619 0.27182 0.18029
C 7.10357 1.27268 -0.90197
O 6.33812 2.19412 -1.18488
N 8.29333 1.11449 -1.48721
C 8.71386 1.96709 -2.59372
C -1.20261 -1.98567 -3.97467
O -0.49869 -3.13261 -4.47041
C -2.65286 -2.43795 -3.96990
O -3.58536 -1.36141 -3.84283
C -2.71404 -3.17184 -5.29549
C -1.35444 -3.87145 -5.33991
H -6.80885 2.07986 0.58023
H -0.73891 4.90829 -4.32000
H -1.47784 2.77868 -4.71063
H -1.91924 2.21676 -1.97711
H -2.69435 1.42901 -3.32272
H -3.78837 2.23793 -0.74238
H -6.33535 3.13592 -1.67928
H -3.60804 4.97813 -0.54997
H -5.23768 7.38361 -0.98629
H -3.47187 7.27494 -1.08135
H -4.27897 7.32701 0.49348
H -2.58958 0.69740 5.93128
H -1.56439 1.57513 4.09001
H 0.70878 2.18190 5.76161
H 1.37603 4.56450 2.12498
H 2.98234 4.78136 2.81617
H 3.81753 2.38619 -0.85315
H 5.33092 3.39987 -2.05724
H 4.54785 5.88460 -3.46327
H 5.74590 4.77627 -4.13401
H 6.09865 5.66317 -2.65202
H 6.42510 1.55937 3.30344
H 5.49511 1.64297 1.23909
H 7.53722 -0.35274 0.49404
H 8.88517 0.36926 -1.19271
H 8.53081 3.00296 -2.34695
H 8.17240 1.72944 -3.50194
H 9.77082 1.82255 -2.76524
H -1.09776 -1.14712 -4.65793
H -2.82083 -3.09119 -3.13430
H -3.67633 -0.89273 -4.68566
H -3.54580 -3.85801 -5.37559
H -2.79398 -2.44268 -6.09551
H -0.93672 -3.89449 -6.33649
H -1.42326 -4.88588 -4.97193
H 1.56065 4.08102 -0.05892
H 2.66520 2.67345 3.96162
$end

$rem
mem_total 96000
mem_static 48000
jobtype sp
method wB97M-(2)
correlation rimp2
basis def2-tzvp
aux_basis rimp2-def2-tzvp
$end

Ok, so this calculation is 2879 basis functions and 7169 aux basis functions, that is pushing it for MP2… I know my group has done 2000+ basis functions but I’m not sure if we’ve gone all the way to 3000 (maybe). Please read what the manual has to say not only about double hybrids but also about RIMP2. Based on that, here is what I think your $rem section should look liike

$rem
mem_total 125000 ! might as well use just about all memory on one node
mem_static 100 ! should not need much
method wB97M-(2)
correlation mp2 ! RI is automatic when you specify aux_basis_corr below
basis def2-tzvp
aux_basis_corr rimp2-def2-tzvp ! uses aux basis for RIMP2 part only
$end

Then you will want to use the whole node (qchem -nt 32 …), for memory reasons and to reduce the SCF cost but also the RIMP2 code parallelizes quite well across one shared-memory node (e.g., I have documented 27.5x speedup on 28 threads, for the MP2 part). Manual claims that the minimal memory requirement for this job is 3*X**2 (X = # aux functions), and that’s in double-precision numbers. If true then that’s about 120 Gb for this job.

Your molecule runs on one node of my hardware (28 cores, 128 Gb RAM) in about 2.4 hours. $rem section below. Didn’t try it on our 40-core machines but I suspect the scalability is not finished at 28 cores.

$rem
mem_total 125000 ! might as well use just about all memory on one node
mem_static 100 ! should not need much
method wB97M-(2)
correlation mp2 ! RI is automatic when you specify aux_basis_corr below
basis def2-tzvp
aux_basis_corr rimp2-def2-tzvp ! uses aux basis for RIMP2 part only
$end

Thank you very much! It works. At least it passed the SCF and entered the MP2 stage now:

SCF time: CPU 50691.65 s wall 1811.40 s
SCF energy in the final basis set = -5689.58991563
Total energy in the final basis set = -5689.58991563


Generalized many-body perturbation theory program
by Joonho Lee, Fazle Rob, Xintian Feng, Evgeny Epifanovsky

No regularization used
(reg. param. = 0.0000e+00)
No non-Brillouin singles included for double hybrids

Just a quick update, the calculation finished successfully. It took less than 5 hours. Thanks again.