Panwang Zhou
pwzhou@gmail.com
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
>
>
>
>
>