Skip to main content

Gaussian: Software for electronic structure modeling

Contents

  1. Overview of package
    1. General usage
  2. Availability of package by cluster
  3. Using checkpointing with Gaussian

Overview of package

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

General usage information

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 of the package Gaussian, by cluster

This section lists the available versions of the package Gaussianon the different clusters.

Available versions of Gaussian on the Zaratab cluster

Available versions of Gaussian on the Zaratab cluster
Version Module tags CPU(s) optimized for GPU ready?
16 gaussian/16 x86_64 Y
09 gaussian/09 x86_64 Y
16c gaussian/16c x86_64 Y

Using 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 on top of the previous checkpoint file. While this is usually fine, if the code dies in the process of writing the output file (and maybe in some other cases), the new checkpoint file could be corrupt, in which case there is no good checkpoint file afterwards.

A possible solution is to have Gaussian output the checkpoint file to a temporary file, and have the job script run a small process which will periodically backup the 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=...
(followed by whatever other SBATCH flags are needed)

# Load the appropriate modules
module load gaussian

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

# 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, and terminate if not
	for i in $(seq 1 ${bkmin})
	do
		[[ -x $(ps -o pid= -o 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
				break
			fi
		done
	done
done





Back to Top