CPHF error: "could not allocate g fock 555"


Just Got Here
Dear NWChem developers,

I've tried to calculate hessian for a quite large molecule, such as bacteriochlorophyll without aliphatic tail (85 atoms including Mg). I can perform this task in 6-31 basis but when I'm trying to do this in larger basis (cc-pvdz) I receive following error:

                                NWChem CPHF Module
                                ------------------


  scftype          =     RHF 
  nclosed          =      171
  nopen            =        0
  variables        =   124488
  # of vectors     =      255
  tolerance        = 0.10D-03
  level shift      = 0.00D+00
  max iterations   =       50
  max subspace     =     2550

 Grid integrated density:     342.000049006129
 Requested integration accuracy:   0.10E-06
 SCF residual:    8.5297123820759612E-004


Iterative solution of linear equations
  No. of variables   124488
  No. of equations      255
  Maximum subspace     2550
        Iterations       50
       Convergence  1.0D-04
        Start time  25707.3


   iter   nsub   residual    time
   ----  ------  --------  ---------
 rohf_h2e: could not allocate g_fock      555
 ------------------------------------------------------------------------
 ------------------------------------------------------------------------
  current input line : 
 rohf_h2e: could not allocate g_fock      555
 rohf_h2e: could not allocate g_fock      555
 ------------------------------------------------------------------------
 ------------------------------------------------------------------------
  current input line : 
     0: 
 ------------------------------------------------------------------------
 rohf_h2e: could not allocate g_fock      555
 ------------------------------------------------------------------------
 ------------------------------------------------------------------------
  current input line : 
   113: TASK dft hessian
 ------------------------------------------------------------------------


Google tells me that it problem in memory size, but memory directive was set 600 mw and RAM size is 24 Gb for 1 4-core processor.

Could you please help me with this? Is this task a really big for my machine or I'm doing something wrong?

Also, some system settings
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194304
max total shared memory (kbytes) = 20971520
min seg size (bytes) = 1

and input file:
TITLE "BChl a DFT/B3LYP cc-pvdz hessian"
START BCl_hess

MEMORY 600 mw

CHARGE 0

GEOMETRY units an 
 Mg      68.6498225237   1.0682417826  33.4119394445
 C         70.0423879873   0.2317804898  30.3702690349
 C         66.3209039567   2.9350568075  31.7901148353
 H         65.5824515564   3.5511815949  31.2756874385
 C         67.2969614933   1.8314373440  36.4222323241
 H        66.8460641461   2.1076315320  37.3743826529
 C         71.0628979431  -0.8724802993  35.0048294908
 H        71.8096892061  -1.4959959813  35.5007010752
 N       68.2527212807   1.5040652122  31.3502058912
 N       67.0604723552   2.1788158187  34.0074709894
 N       69.1186615815   0.5561049991  35.4084813430
 N       70.2412768827  -0.0346650255  32.8713656000
 C         68.9200408612   1.0363638991  30.2553501406
 C         68.2474075425   1.4684210820  28.9712893451
 H       68.9908326217   1.8571245146  28.2582902904
 C         67.3028308986   2.5810313929  29.4626149572
 H       66.2963601022   2.4696251345  29.0270320092
 C         67.2539251567   2.3322304209  30.9594402690
 C         67.8238040647   3.9846102302  29.1547875035
 H       67.8848313620   4.1468348267  28.0673070127
 H       67.1695556328   4.7597766526  29.5813827678
 H       68.8316270094   4.1266555114  29.5764570475
 C         67.5140989177   0.2960715831  28.3074341793
 H       66.6609602820  -0.0143497900  28.9330961263
 H       68.1748316037  -0.5814656698  28.2516918609
 C         67.0393900936   0.6315380698  26.9043702842
 H       67.8959428084   0.8707453431  26.2513279691
 H       66.3939038894   1.5254944473  26.8823029664
 C         66.2750957268  -0.4983512746  26.2669651773
 O         66.0809306502  -1.5818022641  26.7609942560
 O         65.8242130047  -0.1483119156  25.0494970049
 C         66.2019770051   2.8634387943  33.1910489126
 C         65.1800874402   3.5049539495  33.9757895676
 C         65.4546743207   3.1910118873  35.3067868918
 C         66.6463705693   2.3628578338  35.2946038253
 C         64.0792369444   4.3310672532  33.3969820999
 H       64.0619126899   5.3468289237  33.8185504889
 H       64.1828544243   4.4341321257  32.3100921586
 H       63.0895779537   3.8881234430  33.5872623806
 C         64.7194763824   3.5835488271  36.5285289638
 O         65.1227142574   3.2986933322  37.6466010561
 C         63.4239690635   4.3512409137  36.4036128904
 H       63.0172338824   4.4923875913  37.4115401818
 H       63.5871356792   5.3340449141  35.9373604126
 H       62.6951304713   3.8103331059  35.7823022840
 C         68.4258201119   1.0247181936  36.4717799245
 C         69.0610955640   0.5944364151  37.7795220134
 H       68.2914909824   0.1612357971  38.4385693565
 C         70.0709039663  -0.4760988514  37.3254606220
 H       71.0646435972  -0.2905535765  37.7686035591
 C         70.1249518221  -0.2620659790  35.8242263112
 C         69.7091279264   1.7780797729  38.4964184826
 H       68.9650381352   2.5508570260  38.7396137216
 H       70.1843710468   1.4512809218  39.4346017152
 H       70.4835541850   2.2411868596  37.8642612744
 C         69.6509750043  -1.9096099106  37.6775628234
 H       68.6315000738  -2.0851980930  37.2909754138
 H       70.3045266048  -2.6130990564  37.1354879405
 C         69.7099623536  -2.2089580676  39.1681709136
 H       69.4031276401  -3.2447626085  39.3767135717
 H       70.7319898213  -2.0774392194  39.5590630995
 H       69.0474407566  -1.5480697878  39.7491398820
 C         71.1390461159  -0.7853895442  33.6025792130
 C         72.0813682732  -1.4478699544  32.7313634201
 C         71.7046105992  -1.0646383239  31.4493196515
 C         70.5851781310  -0.2108836417  31.5869015423
 C         73.1980217317  -2.3467652252  33.1336018160
 H       72.8349936459  -3.2131186541  33.7095404844
 H       73.7213895282  -2.7213598226  32.2447544901
 H       73.9308498432  -1.8223205574  33.7680319384
 C         71.9814102377  -1.2334585909  30.0262530629
 O         72.8222725816  -1.8978318234  29.4634364658
 C         70.9106871126  -0.3718958198  29.2713481536
 H       70.3436072988  -1.0296514565  28.5954940299
 C         71.5435183080   0.6874125341  28.3925909631
 O         71.1209090478   1.0358245198  27.3149639037
 O         72.6190492421   1.2269322324  28.9768656048
 C         73.2728604649   2.2460447105  28.2248745801
 H       74.1412885433   2.5447617317  28.8218369638
 H       73.5914783519   1.8606897425  27.2462562107
 H       72.6020400442   3.1026999689  28.0655036368
 C         65.0942782307  -1.1642404742  24.3663913535
 H       64.8176385485  -0.7344282217  23.3971409650
 H       64.1944584933  -1.4457149271  24.9324892927
 H       65.7122721546  -2.0626743161  24.2267749465
END



BASIS
 H  library cc-pvdz
 O  library cc-pvdz
 C  library cc-pvdz
 N  library cc-pvdz
 Mg  library cc-pvdz
END

DFT
 iterations 50
 XC b3lyp
 direct
END


TASK dft hessian


Or maybe I should run this task on 1 core with extended memory limit?

Thank in advance,
Daniil Khokhlov.

Forum Regular
Hi Daniil,

This memory issue is definitely related to problems trying to allocate a global array. So running it on 1 core with an extended memory limit is not going to help. The global array that the program tries to allocate has a size of 3*nat*nbf*nbf double precision numbers where nat is the number of atoms and nbf is the number of basis functions. To accommodate such an array you'll need to make sure that the global portion of you memory setting is as large as possible. Your memory specification equates to 150 mw stack, 150 mw heap and 300 mw global memory. Heap memory is actually used very little so you should be able to reduce that considerably (say reduce that to 50 mw), and the stack memory can also be reduced a bit. Otherwise you should increase the global section as much as possible. Note that all these memory settings are per process. With 14 cores and 24 GB you should be able to get 1.5 GB per process. Putting most of that into the global memory section might get you there.

Huub

Just Got Here
Thank you, Huub.
I will try it - 500 mw for global and 100 mw spread between heap and stack.
Also, maybe I didn't clearly described my system - it isn't 14-core processor (unfortunately), but only one 4-core processor, so I allow NWChem to use 6 Gb per process.
And another one question, can this problem be connected with MPI? I propose it due to some ARMCI offset warnings which appear only for 3 processes from 4, such as "WARNING: armci_set_mem_offset: offset changed". Or they are also connected with global memory problems?



Upd. It really works, iterative process began. Many thanks!


Forum >> NWChem's corner >> Running NWChem