Running GAMESS on Peregrine
The GAMESS environment is accessible by loading the gamess module. GAMESS has been built against the impi-intel toolchain, and so the environments for these components must also be set via the modules system. An example for doing so is
module purge module load impi-intel module load gamess
For those familiar with the canonical GAMESS run procedures, NREL has bypassed the “rungms” script (which mostly just sets run-specific environment variables) and has adapted the procedure to be more consistent with common scheduling and job management systems, and to permit users to more easily customize their GAMESS job configurations. The PBS script below demonstrates the standard workflow.
#!/bin/bash --login #PBS -l nodes=2:ppn=16,walltime=00:05:00 # WALLTIME #PBS -N GAMESStest #PBS -m abe #PBS -M email@example.com #PBS -e ./GMStest.err #PBS -o ./GMStest.out # User may need to redefine these variables RUNTYPE=parallel # Either serial or parallel export JOB_BASENAME=file_prefix # Everything below here shouldn't need modification, unless a specific workflow # is required (e.g., not deleting and existing scratch directory). module purge module load impi-intel module load gamess echo 'PBS_NUM_NODES ' $PBS_NUM_NODES echo 'PBS_NUM_PPN ' $PBS_NUM_PPN # GAMESS oversubscribes MPI processes to nodes by a factor of 2. Each compute process # gets its own communication management process that sits mostly idle. The following # takes care of this detail. if [ $RUNTYPE = 'serial' ] then TOTAL_PROCS=2 else TOTAL_PROCS=$((2*$PBS_NUM_PPN*$PBS_NUM_NODES)) PPN=$((2*$PBS_NUM_PPN)) fi # Two environment variables must be defined in order for the environment to be set up correctly: # SCR : the scratch directory # JOB_BASENAME : your F05 file prefix export SCR=/scratch/$USER/file_prefix if [ -d $SCR ] then rm -rf $SCR fi mkdir $SCR cd $SCR # Assuming job is submitted from $PBS_O_WORKDIR containg job.inp cp $PBS_O_WORKDIR/$JOB_BASENAME.inp $JOB_BASENAME.F05 # This is where all the GAMESS environment variables get set source /nopt/nrel/apps/gamess/050113/etc/GAMESS_EVs if [ $RUNTYPE = 'serial' ] then mpirun -n $TOTAL_PROCS gamess.00.x >& $JOB_BASENAME.log else mpirun -n $TOTAL_PROCS -ppn $PPN gamess.00.x >& $JOB_BASENAME.log fi
GAMESS determines many file paths and names specific to particular job types through environment variables. Thus, these paths and names (and which variables should be set) are usually only available at runtime. In lieu of cascading scripts, we enable the setting of these variables via “sourcing” the GAMESS_ENV file (which is exposed by the GAMESS module) together with some environment variables clearly set by the user in the PBS script beforehand. Power users may simply change the example script to source their own GAMESS_ENV file customized from our baseline version as needed.
For general information, see the GAMESS website; the Google group described at the bottom hosts the primary community mailing list, which is a great resource. The documentation pages are especially helpful for understanding the underlying theory and GAMESS internals. For specific questions and troubleshooting, please send an e-mail message to HPC Help.