Firefly and PC GAMESS-related discussion club


 
Learn how to ask questions correctly  
 
 
We are NATO-free zone
 



Re^6: Memory problem of XMCQDPT2

Panwang Zhou
pwzhou@gmail.com


Dear Alex,

Thanks for your suggestions, I'll try to test CSFs selection.

On Wed Jan 9 '13 7:17pm, Alex Granovsky wrote
---------------------------------------------
>Dear Panwang,

>>Thanks again for your suggestions and comments.
>>Now my job has finished with "MWORDS=480".
>>See following for my detail reply. Thanks.

>Good to know this!

>>>There are at least several options that may help.

>>>First, write a simple shell script - a wrapper for Firefly
>>>that could be e.g. as follows:

>>>

#!/bin/bash
ulimit -s 2048 
/home/gran/firefly/ff8.ex "$@"

>>>This should allow you to use more memory with Firefly
>>>(up to ca. 490-500 MWORDS with modern 64-bit Linuxes)

>>In my system (CentOS 5.7, x86_64), the "ulimit -s” gives 10240, so I think it is not necessary to write this script.

>Actually, the idea is exactly opposite i.e. to limit the stack
>size leaving more free virtual address space for dynamic memory.

>>The max MWORDS I can set in Firefly is 480. Is it possible to
>> increase this value?

>I think you are running very close to the program's limits.

>>Actually I have tried to use "ulimit -s 20480 (and 40960)", however, this have no effect.

>In fact, this should slightly reduce the maximum amount of
>memory one can allocate.

>>>Second, reduce the number of working threads used in the
>>>PT summation, and also add $smp httnp=1 $end to your input.
>>>How much physical (note not logical) cores are available on
>>>the system on which you are running Firefly?

>>I have tried reduce the number of working threads and this actually can reduce the memory.
>>The number of physical cores in our system is 12, two Intel(R) Xeon(R) CPU E5-2630 CPUs. I have disabled the HT in BIOS. The memory in our system is 48 Gb.

>I see.

>>>Third, activate HAlloc option:

>>>

 $xmcqdpt halloc=.t. $end

>>>This will allow Firefly to use memory in the heap i.e.
>>>which is not covered by memory/mwords (the latter is organized
>>>as a stack).

>>This option reduce the memory to about 474 MWORDS, so my job has finished with "MWORDS=480".

>I see.
>
>
>>>>For the EXETYP=CHECK, the job stops at "THE DETERMINANT FULL CI"

>>>> THE NUMBER OF DETERMINANTS HAVING SPACE SYMMETRY A  
>>>> IN POINT GROUP C1   WITH SZ=  0.0 IS        9018009
>>>> WHICH INCLUDES        2147145 CSFS WITH S=  0.0
>>>> WHICH INCLUDES        3864861 CSFS WITH S=  1.0
>>>> WHICH INCLUDES        2277275 CSFS WITH S=  2.0
>>>> WHICH INCLUDES         637637 CSFS WITH S=  3.0
>>>> WHICH INCLUDES          85995 CSFS WITH S=  4.0
>>>> WHICH INCLUDES           5005 CSFS WITH S=  5.0
>>>> WHICH INCLUDES             91 CSFS WITH S=  6.0
>>>> THE DETERMINANT FULL CI REQUIRES   514284263 WORDS

>>>> Fatal error, routine DETFCI needs at least 114284563 more words of memory!

>>>>This is not reasonable as the actual memory request of "THE DETERMINANT FULL CI" is "109225382 WORDS" (From the output of exetyp=run). Due to this error, I could not use exetyp=check to find a suitable value to fit into memory.

>>>This is because Firefly 8.0.0 uses distributed memory FullCI code
>>>so that the memory demands depends on the number of processes used
>>>in calculations. To get correct numbers during check runs,
>>>you should set

>>>

 $(ci)det distci="the desired number of processes" 

>>It works. Thanks.

>>>This allows you to check parallel code performing check run
>>>in serial. On the other hand, if you do not set distci,
>>>the check run assumes that single process will be used.
>>>Sorry this new code and options has not yet been documented.

>>>>In addition, I'm intrested in "CSFs selection" and I'm not clear on how to do this, could you comment on this in detail? Thanks.

>>>I'll provide details on this in my next post to this thread.

>As I promised, there are some details on CSFs selection.

>To allow selection of the most prominent CSFs one need to set  

>

 $(x)mcqdpt 
   iselct(1)=(one of 1, 2, 3, 4, -1, 2, -3, -4) 
   thrwgt="the smallest CSF's weight (i.e. the squared coefficient of CSF in CI expansion) to keep"  
 $end

>The default value of thrwgt is 10-6. One can try smaller values
>e.g. 10-8. By default, iselct(1) is equal to 0 i.e. no selection
>is allowed. The values of 1, 2, 3, and 4 selects slightly different
>schemes of CSFs selection. The least advanced and most plain method
>of selection is method # 1. The most advanced and recommended scheme
>is the method # 4, although the difference between different methods
>is rather subtle. Values of 2, 3, and 4 allows the use of the second
>element of the iselct() array i.e. iselct(2). The value of iselct(2),
>if given, is interpreted as the maximum allowed number of CSFs to
>select. In this case, the actual threshold used in selection procedure
>may exceed thrwgt. The values of -1, -2, -3, and -4 for iselct(1) are
>the counterparts of their positive analogs which in addition perform
>the rotation of CI roots computed in the incomplete space after CSFs
>selection. This rotation is within the space spanned by these CI roots
>and is constructed to  maximize the overlap of rotated states with the
>initial CASCI states before CSFs selection. This option can be
>important for MCQDPT2 but is ignored for XMCQDPT2 as results of
>XMCQDPT2 depends only on the on the subspace spanned by the CI vectors
>rather than on the particular basis in this subspace (i.e. CI vectors).

>Kind regards,
>Alex Granovsky
>
>
>
>
>


[ Previous ] [ Next ] [ Index ]           Thu Jan 10 '13 4:46am
[ Reply ] [ Edit ] [ Delete ]           This message read 1338 times