High-Performance Computing at the NIH
GitHub YouTube @nih_hpc RSS Feed
Gaussian on Biowulf & Helix

Citation and License Agreement

The use of gaussian on Helix Systems requires belonging to the gaussian group. Please contact staff@hpc.nih.gov to be added to the gaussian group.

There are multiple versions of Gaussian available. An easy way of selecting the version is to use modules. To see the modules available, type

module avail Gaussian

To select a module, type

module load Gaussian/[ver]

where [ver] is the version of choice.

Environment variables set:

Commands available:

Interactive Use

Interactive use of Gaussian must be run on an interactive node with local scratch space allocated. Please see https://hpc.nih.gov/docs/userguide.html#int and https://hpc.nih.gov/docs/userguide.html#local for more information.

Create a g16 input file (e.g. g16.com) and type

g16 < g16.com > g16.log &


GaussView is available with the command gview (after loading the Gaussian module).


You may see some kind of error:

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
gview.exe: xcb_io.c:259: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.

NOTE: Depending on your desktop, gview may require the use of either a Fastx or NX persistent connection to display graphics. Please see https://hpc.nih.gov/docs/connect.html for information about Fastx and NX.

Use on Biowulf

NOTE: Gaussian uses local scratch disk for temporary files. Because local disk space is not available by default, it must be deliberately allocated. Otherwise you may see an error regarding local scratch space. The environment variable $GAUSS_SCRDIR is set to /lscratch/$SLURM_JOBID by default for biowulf jobs.

Running a single gaussian batch job on Biowulf

Create a batch script for submission to the cluster, for example gaussian.batch:

#-------------------------  file gaussian.batch  ---------------------------
#SBATCH -J gaussian
module load Gaussian/G16-A03
g16 < g16.com > g16.log

The following environment variables will be set when the g16 command is run:

Because these environment variables are set, there is no need to include the Link 0 commands %LindaWorkers, %NProcShared, or %Mem. The number of processors, nodes, and amount of memory is determined by the amounts allocated in the slurm job. However, if these commands are present in the g16 input file, they will take precedence over the environment variables.

To submit an 8 cpu job on a single node, utilizing 4GB of memory, and 100 GB of scratch space, you would use the following command:

sbatch --cpus-per-task=8 --threads-per-core=1 --mem=4g --gres=lscratch:100 gaussian.batch

The --threads-per-core=1 option causes slurm to allocate a single cpu per core, essentially disabling hyperthreading, and will give better runtimes than otherwise.

Running a swarm of gaussian jobs

Create a swarmfile, for example gaussian.swarm:

#-------------------------  file gaussian.swarm  ---------------------------
g16 < test1.com > test1.log
g16 < test2.com > test2.log
g16 < test3.com > test3.log
g16 < test4.com > test4.log

Submit to swarm, allocating the required resources as necessary. The following example allocates 4 cores (-t 4), 2 GB of memory (-g 2), and 20 GB of local disk space (--gres=lscratch:50) per gaussian process.

swarm -f gaussian.swarm -t 4 -g 2 --noht --gres=lscratch:50 --module Gaussian


Gaussian errors are not always straightforward to interpret. Something as simple as a "file not found" can seem baffling and cryptic. Here is a collection of errors and their translations:

Gaussian Error Translation to English
Error termination in NtrErr:
ntran open failure returned to fopen.
Segmentation fault
Can't open a file.
Out-of-memory error in routine UFChkP (IEnd= 12292175 MxCore=6291456)
Use %Mem=12MW to provide the minimum amount of memory required to complete this step.
Error termination via Lnk1e at Thu Feb 2 13:05:32 2006.
Default memory (6 MW, set in $GAUSS_MEMDEF) is too small for unfchk.

galloc: could not allocate memory.: Resource temporarily unavailable
Not enough memory.
Out-of-memory error in routine...
Not enough memory.
End of file in GetChg.
Error termination via Lnk1e ...
Not enough memory.
IMax=3 JMax=2 DiffMx= 0.00D+00
Unable to allocate space to process matrices in G2DrvN:
NAtomX= 58 NBasis= 762 NBas6D= 762 MDV1= 6291106 MinMem= 105955841.
Gaussian has 6 MW free memory (MDV1) but requires at least 106 MW (MinMem).
Estimate disk for full transformation -677255533 words. Semi-Direct
transformation. Bad length for file.
MaxDisk has been set too low.
Error termination in NtrErr:
NtrErr Called from FileIO.
The calculation has exceeded the maximum limit of maxcyc.
Erroneous read. Read 0 instead of 6258688.  fd = 4 g_read
Disk quota or disk size exceeded. Could also be disk failure or NFS timeout.
Erroneous write. Write 8192 instead of 12288.
fd = 4
orig len = 12288 left = 12288 g_write
Disk quota or disk size exceeded. Could also be disk failure or NFS timeout.
PGFIO/stdio: Permission denied
PGFIO-F-/OPEN/unit=11/error code returned by host stdio - 13.
File name = /scratch/Gau-#####.inp
In source file ml0.f, at line number 177
The user does not have write permission for $GAUSS_SCRDIR.
A syntax error was detected in the input. There is some guidance in the output file below this line.