Skip to content

Gaussian: Software for electronic structure modeling

Overview of package

Package: Gaussian
Description: Software for electronic structure modeling
For more information: http://www.gaussian.com/g_prod/g09b.htm
Categories: Chemistry
License: Proprietary

General Usage

Gaussian is an electronic structure programs, used by chemists, chemical engineers, biochemists, physicists and other scientists worldwide. Starting from the fundamental laws of quantum mechanics, Gaussian predicts the energies, molecular structures, vibrational frequencies and molecular properties of molecules and reactions in a wide variety of chemical environments. Gaussian's models can be applied to both stable species and compounds which are difficult or impossible to observe experimentally (e.g., short-lived intermediates and transition structures).

This module will add the various gaussian commands (g09/g16, etc) to your path. You may need to create the scratch directory for Gaussian, e.g. issue the command: mkdir $GAUSS_SCRDIR

NOTE: For sundry technical reasons, in order to use Gaussian on the HPC clusters you will need to be added to a gaussian-users Unix group or you get permission denied errors. Just send a note to hpcc-help@umd.edu and you will be added to the group.

Available versions by cluster

This section lists the available versions of the package Gaussianon the UMD HPC clusters.

Versions available on the Zaratan cluster

Version Module tags CPU(s) optimized for GPU ready?
16 16 x86_64 Yes
16c 16c x86_64 Yes
09 09 x86_64 Yes

Checkpointing with Gaussian

Checkpointing is a process by which the state of a code is saved to a file so that the code can be restarted from where it left off. Gaussian supports checkpointing out of the box if you use the %chk= option in the Gaussian input file.

Although Gaussian will automatically save a checkpoint file periodically, each time it saves a checkpoint file, it saves it on top of the previous checkpoint file. While this is usually fine, and saves disk space (as there is only a single copy of the program's state saved to disk), the new checkpoint file could be corrupt, in which case there is no good checkpoint file afterwards. This could happen for a variety of reasons, including if the job dies while the checkpoint is being written.

A possible way around this issue is to have Gaussian output the checkpoint file to a temporary file, and have the job script run a small process which will periodically back up this temporary file to the "good" checkpoint file, after verifying that it is not corrupted. An implementation of this (based on the example from hpc-wiki.info would be something like

#!/bin/bash
#SBATCH --ntasks=...
#(add additional SBATCH flags as needed)

# Load the appropriate modules
module load gaussian

# Run gaussian in the background, saving the pid
g16 input_file_name &
g16pid=$1

# Periodically backup and verify the checkpoint file
# Backups will be made every $bkmin minutes
bkmin=60
while true
do
    # Check every minute that g16 is still running
    # Terminate if it is not still running
    for i in $(seq 1 ${bkmin})
    do
        [[ -x $(ps -o pid= ucmd= -p ${g16pid} ]] && exit 0
        sleep 1m
    done

    # Verify and backup the checkpoint file every bkmin minutes
    for i in $(ls *.chk)
    do
        while true
        do
            rsync -auq ${i} ${i}.b4bk
            chkchk ${i}.b4bk > /dev/null 2>&1
            if [ $? -eq 0 ]; then
                mv ${i}.b4bk ${i}.lastbk
            fi
        done
    done
done

This will inspect the various *.chk files in the working directory every $bkmin minutes. If the checkpoint file is valid, it will be renamed to have a '.lastbk' extension.