Everything You Need To Set Up PC-GAMESS On A(n) SMP System

The following is a step-by-step guide to getting PC-GAMESS 6.4 (perhaps prior. I'm not inclined to check, but would appreciate a confirmation) running on a(n) SMP (that's Symmetric MultiProcessing (useless trivia), a single motherboard with multiple processors) system. All of the websites describing what's below are less… obvious than I would like, especially concerning the infamous .pg file for SMP machines. What's below is specifically geared for a dual-core/dual-board (four processor) system, but is easily changed to other SMP cases.

1. Obtain the most recent (6.4 as of this posting) version of PC-GAMESS from the good Dr. Alex Granovsky.

2. After extracting the contents of the downloaded .exe file, you'll notice the wmpi1_3.exe file. Double click to install this program, blindly saying yes to everything it asks.

3. In your c:\ directory (dig into My Computer), create the sub-directories pg1, pg2, pg3, and pg4 (note: the names are completely arbitrary). When that's done, your folders should look like the following (PEXECUTE.BAT and PRUNGAMESS.BAT are separate batch files you can download below):

4. Into c:\pg1, place all of the extracted PC-GAMESS files (whatever came out of the .exe run). The folder should look like this (with three input files added by myself for testing):

5. Into the folders c:\pg2, c:\pg3, and c:\pg4, copy and paste (from c:\pg1) the files FASTDIAG.DLL, PCGP2P.DLL, and PGAMESS.EXE. These directories will look like the following:

6. Back in c:\pg1, create or place pgamess.pg, the wmpi config file you can download HERE (if you download, remove the .txt extension before use). The file is, simply,

local 0
localhost 1 c:\pg2\pgamess.exe 
localhost 1 c:\pg3\pgamess.exe 
localhost 1 c:\pg4\pgamess.exe 

No surprises, but I've never found the SMP .pg file listed anywhere. This file is just for SMP runs. local 0 refers to the "base" copy of PGAMESS (in c:\pg1, the PC-GAMESS home directory). The localhost 1 lines call each of the other three directories and PGAMESS.EXE for the three remaining processors (in the quad box). For a dual core or dual CPU box, you'd remove c:\pg3 and c:\pg4 and delete the third and fourth lines in pgamess.pg.

7. The command line will look like the following (note: the input file must be named "input"):

c:\pg1> PGAMESS.EXE c:\pg1 c:\pg2 c:\pg3 c:\pg4 -p4local > filename.out

All should, in theory, work without hitch. For a batch-type system (you can't add new files, but you can run existing jobs in the same directory automatically and sequentially), download the files PEXECUTE.BAT and PRUNGAMESS.BAT and place them into c:\pg1 (make sure to remove the .txt extension before use if you download these). To run this script, simply double-click on PRUNGAMESS.BAT.

NOTE1: Of course, what's shown is not the most efficient way to run PC-GAMESS. For maximum speed-up, you'll want a single hard drive dedicated to EACH processor (so each temp file is being written to a different disk). Your folders c:\pg1, c:\pg2, c:\pg3, and c:\pg4 would then be c:\pg1, d:\pg2, e:\pg3, and f:\pg4.

NOTE2: A number of my calculations fail randomly with MPI memory allocation/write errors on dual core/dual cpu AMD Opteron machines running Windows XP. These errors are actually hard drive write problems and not RAM problems. You can get around this problem (errors and OK buttons will pop up) by running the calculations in-RAM (DIRSCF=.TRUE.) and ramping up the amount of used RAM (with the MEMORY= keyword).

Using External Basis Sets In GAMESS-US, Running Mixed Basis Set Calculations With Z-Matrix Inputs

The parameterization of the new nanoENGINEER-1 simulator is being performed for molecules containing H through Cl at the B3LYP/6-31+G(d,p) level of theory. Unfortunately, the 6-31+G(d,p) basis set is not available for the 4th row elements (Ga,Ge,As,Se,Br), meaning an alternate basis set is required (for the 4th row, that is). In GAMESS-US, this is simple if the input files are in Cartesian format. This same approach cannot be used in Z-matrix input formats. A (maybe THE only) way to call mixed basis sets for Z-matrices in GAMESS-US is provided here. The procedure involves making an external basis set file with the required basis sets, changing the $BASIS control to read the external file, and modifying rungms to read the external basis set file.

Below is a sample input file. The only noteworthy differences between it and any other input file are (a) the $BASIS line, which tells GAMESS-US to use the external file (EXTFIL=.TRUE.) and (b) the call to use external basis sets named STO2GBAS. In this external file, you can have multiple groups of elements and basis sets, but not multiple basis set types for the SAME ELEMENT in the same group (so far as I know at the moment). This means that the external basis set example file I have available here has Hydrogen (H) and F (Fluorine) STO-2G (STO2GBAS) and 3-21G (321GBASI) basis set groups, but that you CANNOT call the STO2GBAS Hydrogen basis set and 321GBASI Fluorine basis set.

 $CONTRL SCFTYP=RHF RUNTYP=OPTIMIZE COORD=ZMT $END
 $BASIS EXTFIL=.TRUE. GBASIS=STO2GBAS $END
 $CONTRL NZVAR=1 $END
 $ZMAT IZMAT(1)=1,1,2 $END
 $DATA
COMMENT: HF Z-matrix with mixed basis sets
C1
H
F  1  HFDist

HFDist=1.00
 $END

The edit to the rungms file is as follows. You will need to change the EXTBAS control from its default (/dev/null) to the location of the external basis set file (which I have named EXTFILE.txt). If the basis set file is in the same directory as your GAMESS-US executable, then change the EXTBAS to ./EXTFILE.txt.

set echo
setenv ERICFMT ./ericfmt.dat
setenv IRCDATA ./$JOB.irc
setenv   INPUT $SCR/$JOB.F05
setenv   PUNCH ./$JOB.dat
setenv  EXTBAS ./EXTFILE.txt
setenv  AOINTS $SCR/$JOB.F08

The external basis sets can, of course, be downloaded from www.emsl.pnl.gov. My sample file, EXTFILE.txt, is below. Note the STO2GBAS and 321GBASI grouping. These labels MUST have 8 characters. Change the basis set choice by changing GBASIS in $BASIS in the input file.

H STO2GBAS
 S   2
  1         1.309756377    0.4301284980
  2         0.233135974    0.6789135310

F STO2GBAS
 S   2
  1        63.73520200     0.4301280000
  2        11.34483400     0.6789140000
 L   2
  1        2.498548000     0.4947200000E-01     0.5115410000
  2        0.633698000     0.9637820000         0.6128200000

H 321GBASI
 S   2
  1        5.4471780000    0.1562850000
  2        0.8245470000    0.9046910000
 S   1
  1        0.1831920000    1.0000000000

F 321GBASI
 S   3
  1     413.80100000000    0.5854830000E-01
  2      62.24460000000    0.3493080000
  3      13.43400000000    0.7096320000
 L   2
  1       9.7775900000    -0.4073270000         0.2466800000
  2       2.0861700000     1.2231400000         0.8523210000
 L   1
  1       0.4823830000     1.0000000000         1.0000000000

You can download all of the program text and some brief comments in a single file located HERE.

In order to use the 6-31+G(d,p) and 6-311G(d,p) basis sets for a single molecule of mixed 1st/2nd/3rd row and 4th row elements, define an 8-character sequence for the group (like MIXEDBAS) and simply add all of the required basis sets for whatever elements into that group. Again, it is not obvious how to have two Hydrogen atoms in a single molecule have two different basis sets in a Z-matrix input by this (or any other) method in GAMESS-US, but the above goes a long way towards removing a major obstacle to running many molecules.