New semidirect MP2 properties/gradient code was developed to speed up MP2 gradient and related jobs, to seriously reduce memory demands and to allow efficient parallel execution. It is based on FASTINTS code and runs in parallel using P2P interface. It has very modest memory demands, namely, asymptotically they are proportional to Nocc ∙( Nocc + Ncore) ∙Nvir, where Nocc is the number of active (not counting frozen core) occupied orbitals, Ncore is the number of frozen core occupied orbitals, and Nvir is the number of virtual orbitals. Intrinsically, it is very fast and has very good parallel scalability, with most of the memory demands reducing linearly with the number of used computing nodes. At present, it is limited to RMP2 case only, but will be extended for ZAPT2 in the future.

New MP2 gradient code uses disk I/O and (large) temporary files to store half-transformed 2-electron integrals (file DASORT) and non-separable part of MP2 2-particle density matrix (DM2, stored in file DAFL30 by gradient runs only) and thus can be disk I/O intensive. When running in parallel, the contents of these files is evenly distributed across all nodes. If one is running this code in parallel on SMP or multicore system, it is recommended to assign a separate physical disk to each of the parallel PC GAMESS/Firefly processes.

Note, the exact amount of disk space required to store files DASORT and DAFL30 cannot be predicted exactly because of two reasons. First, the PC GAMESS/Firefly uses sparsity of half-transformed integrals and DM2 to save disk space by storing only non-zero values. Second, half-transformed integrals, DM2 elements as well as their labels are further packed, and it is impossible to predict the exact packing ratio. However, it is possible to provide upper bounds on the overall maximum sizes of DASORT and DAFL30. Note, these bounds usually seriously overestimate the real size of these files!

Namely, the overall size of all DASORT files is less or equal than:

6*Nocc*Nvirt*Nao*(Nao+1) bytes

Similarly, the overall size of all DAFL30 files is less or equal than:

8*Nocc*Nvirt*Nao*(Nao+1) bytes

Here, Nocc is the number of active occupied orbitals (i.e., excluding frozen core orbitals), Nvirt is the number of virtual orbitals, and Nao is the number of Cartesian atomic orbitals.

The new code is controlled by two keywords of the $MP2 group and by several additional keywords of $MP2GRD group. New code is triggered on by the presence of METHOD=1 keyword in $MP2 group and its behavior is further controlled by either $MP2 GRDMET=1 $END or $MP2 GRDMET=2 $END (the default) switch. GRDMET=2 uses less memory and is usually faster, but for some combinations of computer systems and particular tasks GRDMET=1 can be the preferred option.

The fine tuning of the new properties/gradient module is possible via the following keywords of the $MP2GRD group:

Below is the recommended part of the input file to be used with the new MP2 gradient code:

 $contrl inttyp=hondo $end
 $p2p p2p=.t. dlb=.t. xdlb=.t. $end
 $smp csmtx=.t. $end
 $mp2 method=1 $end

Depending on your Operating System (e.g., under some Windows systems), the use of the following addition options:

  $system splitf=.t./.f. $end (large file splitting enabled/disabled)


  $system ioflgs(30)=1 $end (activate file cache write through mode for unit # 30 which contains DM2 elements)

may have serious positive or negative impact on the overall performance as well.

The following set of parameters of the new MP2 gradient code seems to be optimal in the case you are running large problems in parallel on Linux-based SMP or multicore system which do not have a separate physical disks for each instance of the parallel PC GAMESS/Firefly processes (as recommended above).

 $system splitf=.f. $end
 $system ioflgs(30)=0 $end
 $mp2grd dblbf=0 fused=0 asysnc=1 $end

Firefly v. 7.1.E and above specific I/O options.

The following set of additional I/O parameters of the new MP2 gradient code seems to be optimal for large-scale jobs running under Windows Vista and Windows Server 2008 R1.

 $mp2 ioflgs(1)=65536,65536 ioflgs(3)=65536,65536 $end

Basically, these settings turn on direct unbuffered disk I/O for files DASORT and DICTNRY and disable standard buffered disk reads and writes.

The following set of additional parameters (one can use even tighter values) is a MUST in the case of the partial linear dependence of the AO basis set.

 $contrl icut=11 inttyp=hondo $end
 $scf nconv=7 $end
 $mp2grd tol1=1d-12 tol2=1d-12 $end

The following options of $MP2 group affects MP2 gradient calculations regardless on the particular algorithm selection:

See also description of CPTOL and MXCPIT options in documentation on older PC GAMESS versions.

See also:

Last updated: March 18, 2009