Alex Granovsky
gran@classic.chem.msu.su
If your system would have four separate HDDs,
the optimal scenario were to run Firefly in
parallel using four processes, each running in
single-threaded mode on its own HDD.
However, this is not the case, and thus,
you need to perform some experiments on
to find the best way how to use Firefly's
MP2 gradient code for your typical molecules.
Actually, there are three basis alternatives to test.
1. Running PC GAMESSS/Firefly in parallel using two processes,
each on its own separate HDD.
2. Running PC GAMESSS/Firefly in parallel using two processes,
each on its own separate HDD; each process uses two working
threads (mklnp=2) to achieve some additional speedup.
3. Running PC GAMESS/Firefly in parallel (using default
single-threaded mode) with four processes, each pair of
processes share separate HDD.
The optimal solution depends on the particular hardware.
It also depends on the ratio of typical size of temporary
files used by MP2 gradient code to the amount of system
memory (this defines how efficient file caching could be).
Another important thing to check is the effect of various
I/O modifier flags described on the PC GAMESS/Firefly' MP2
gradient code page at:
http://classic.chem.msu.su/gran/gamess/mp2grd.html
on the overall performance.
Specifically, for Vista I'd suggest to test various combinations of:
$system splitf=.t./.f. $end (large file splitting enabled/disabled)
$system ioflgs(30)=1 $end
$mp2 ioflgs(1)=65536,65536 ioflgs(3)=65536,65536 $end
Each of these options may have both positive and negative effect
on I/O performance depending on the filesystem in use, amount of
installed RAM, HDDs performance, size of temporary files,
installed OS updates and drivers, etc... Note, last two options
will for sure slow down calculations if all the temporary files
are fully cached by the OS as they instruct Firefly to bypass file cache.
Well, this looks like a lot of work/testing to be done...
however, this calibration only need to be done once for a
class of typical jobs (e.g., having approximately the same
number of core, occupied, and virtual orbitals).
For your particular hardware configuration and molecular system,
I'd suggest you to start with something like:
! For MP2, to set inttyp to hondo (even if most of runs do not use hondo package anymore) is a good idea: $contrl inttyp=hondo $end ! It is good idea to request extra precision, at least: $contrl icut=10 $end $scf nconv=6 $end ! This input file assumes two working threads per process: $system mklnp=2 $end ! Actually, one can use much smaller amount of memory than specified below. Run check job to find the optimal amount. $system mklnp=2 memory=200000000 $end ! The following is the recommended option for Windows OS: $smp csmtx=.t. $end ! P2P is a must $p2p p2p=.t. dlb=.t. xdlb=.t. $end !depending on what is the faster approach for you molecule: $scf dirscf=.f. $end !or $scf dirscf=.t. $end $mp2 method=1 thrdii=10 $end ! Under Vista, it is good idea to test $mp2 ioflgs(1)=65536,65536 ioflgs(3)=65536,65536 $end ! Some extra precision may be needed for basis sets with diffuse functions: $mp2grd tol1=1d-12 tol2=1d-12 $end
Best regards,
Alex Granovsky
On Thu Mar 19 '09 5:07am, Valentin Monev wrote
----------------------------------------------
>Dear Professor Granovsky,
>I am running the latest version of firefly on the following hardware, which I believe could occur very often - an Intel Q9550 quadcore, 8GB RAM, two separate 1TB Samsung hard disks, under Windows Vista Ultimate 64. Your suggestions/comments on some input parameters for running mp2 calculations on such a system would be highly appreciated
>(I am optimizing some molecules containing fused five-member rings containing boron - see attached zip file containing input and output, obtained on a dual core E8400 with 4GB RAM)
>$system mklnp=? memory=268000000 max? $end
>$mp2 method=1 dm2met=-1 thrdii=10 dm2met=-1 $end
>$scf dirscf=.f. since .true. seems about three times slower!
>$mp2 ioflgs(1)=65536,65536 ioflgs(3)=65536,65536 $end I haven't tested this.
>$p2p p2p=.t. dlb=.t. xdlb=.t. $end is this applicable?
>$smp csmtx=.t. $end is this applicable?
>$contrl icut=11 inttyp=hondo $end
>$scf nconv=7 $end
>$mp2grd tol1=1d-12 tol2=1d-12 $end
>Thank you in advance. vm
>
[ This message was edited on Fri Mar 20 '09 at 5:52pm by the author ]