Description

The General Atomic and Molecular Electronic Structure System (GAMESS) is a general ab initio quantum chemistry package.

The GAMESS web site is http://www.msg.ameslab.gov/gamess/.

GAMESS documentation is available on the GAMESS web site as well as in the directory /home/software/rhel6/lsa/GAMESS/20120501/gamess and consists of the following files:

INTRO.DOC – Overview
INPUT.DOC – Input Description
TESTS.DOC – Input Examples
REFS.DOC – Further Information
PROG.DOC – Programmer’s Reference
IRON.DOC – Hardware Specifics

Availability

GAMESS is currently available on both Flux and Nyx.

Accessing GAMESS

GAMESS is part of the LSA contributed software library. To use it, you must load the GAMESS modules after you load the modules it depends on.

You can either load the modules separately, as in

$ module load intel/17.0.1
$ module load openmpi/1.10.2/intel/17.0.1
$ module load GAMESS/2018R1

or together, as in

$ module load intel/17.0.1 openmpi/1.10.2/intel/17.0.1 GAMESS/2018R1

Running GAMESS

GAMESS will generate multiple temporary output files on multiple compute nodes, and copy the relevant results files to the directory from which GAMESS was invoked.  At the end of the run the temporary output files will be removed automatically. We recommend that you have a separate subdirectory for each GAMESS analysis. For this example, we’ll do our work in a subdirectory named gamess-test.

$ cd $HOME
$ mkdir gamess-test
$ cd gamess-test

For the purposes of this demonstration, we’ll run the first example provided as a part of the GAMESS software, as described in the documentation TESTS.DOC. You can either copy the file to your subdirectory, like this:

$ cp /sw/src/lsa/GAMESS/gamess/tests/standard/exam01.inp $HOME/gamess-test/exam01.inp

Or you can create a file named exam01.inp containing the following lines:

! EXAM01.
!    1-A-1 CH2    RHF geometry optimization using GAMESS.
!
 $CONTRL SCFTYP=RHF RUNTYP=OPTIMIZE COORD=ZMT NZVAR=0 $END
 $SYSTEM TIMLIM=1 $END
 $STATPT OPTTOL=1.0E-5  $END
 $BASIS  GBASIS=STO NGAUSS=2 $END
 $GUESS  GUESS=HUCKEL $END
 $DATA
Methylene...1-A-1 state...RHF/STO-2G
Cnv  2

C
H  1 rCH
H  1 rCH  2 aHCH
rCH=1.09
aHCH=110.0
 $END

You can run GAMESS using a command of the form rungms JOB_FILE. Note that the job file name argument to rungms should be given without the .inp extension. For our demonstration, run:

$ rungms exam01

The results will be in the file exam01.dat. Note that you will need to rename or remove this file, otherwise GAMESS will not start the next time it is run in the same directory.

When you run GAMESS by hand on Flux, it will use only a single processor core (it will run as a serial job). To utilize multiple cores (that is, to run it as a parallel job), run GAMESS from PBS as described below.

Running GAMESS from PBS

If you ran GAMESS by hand, as described above, then remove the output file so we can run this job again from PBS:

$ rm -f exam01.dat

If you did not run GAMESS by hand, as described above, then create the subdirectory and input file that will be used for this demonstration:

$ cd $HOME
$ mkdir gamess-test
$ cd gamess-test
$ cp /home/software/rhel6/lsa/GAMESS/20120501/gamess/tests/standard/exam01.inp $HOME/gamess-test/exam01.inp

Create the following PBS file in the gamess-test directory, naming the file test.pbs, and changing example_flux to the name of your Flux allocation in the #PBS -A line.

#!/bin/sh

####  PBS preamble:

#PBS -N gamess_test
#PBS -m abe 

#PBS -l nodes=2:ppn=16,pmem=1gb,walltime=00:05:00
#PBS -j oe 
#PBS -V

#PBS -A example_flux
#PBS -q flux

####  End PBS preamble

#  Show list of CPUs you ran on, if you're running under PBS
if [ -n "$PBS_NODEFILE" ]; then uniq $PBS_NODEFILE; fi

#  Change to the directory you submitted from
if [ -n "$PBS_O_WORKDIR" ]; then cd $PBS_O_WORKDIR; fi

#  Put your job commands after this line
rungms exam01

To submit the job, run

$ qsub test.pbs

Optional Arguments

It is possible to invoke rungms with up to four arguments:

$ rungms job-input version-number ncores cores-per-node

where

  • job-input is the name of the job input file
  • version-number is the version number of the GAMESS executable (use 00)
  • ncores is the total number of cores to use for the run
  • cores-per-node is the number of cores to use on each node

Usually it is not necessary to specify more than one argument; rungms will compute the GAMESS core geometry from that specified in the PBS script.

Limitations

The OpenMPI implementation of GAMESS creates a data server process for each compute process. Thus the number of cores available for compute processes is halved. The rungms script handles this if you don’t supply the cores-per-node argument. If you do specify it, it can’t be bigger than half of the total number of cores. In the 2 node x 16 cores/node geometry above, cores-per-node can’t be bigger than 8, otherwise you’ll get a complaint about more processes than the topology can support. Note that ncores is not halved.

GAMESS creates a static table for coordinating communications among its processes. Currently, this table is sized for a maximum of 125 nodes with a maximum of 40 cores/node, but these numbers can be increased if needed; contact flux-support@umich.edu to request an increase.

Additional information

Additional information is available on the GAMESS web site at http://www.msg.ameslab.gov/gamess/. For any Flux-specific assistance running GAMESS, contact flux-support@umich.edu.