Gaussian and GaussView

Overview

  • Gaussian is a computer program used by chemists, chemical engineers, biochemists, physicists, and other scientists. It utilizes fundamental laws of quantum mechanics to predict energies, molecular structures, spectroscopic data (NMR, IR, UV, etc) and much more advanced calculations. GaussView is a graphical interface used with Gaussian.

  • Gaussian 16 is the latest in the Gaussian series of programs. It provides state-of-the-art capabilities for electronic structure modeling. Gaussian 16 is licensed for a wide variety of computer systems. All versions of Gaussian 16 contain every scientific/modeling feature, and none imposes any artificial limitations on calculations other than your computing resources and patience.

  • GaussView 6 is the latest iteration of a graphical interface used with Gaussian. It aids in the creation of Gaussian input files, enables the user to run Gaussian calculations from a graphical interface without the need for using a command-line instruction, and helps in the interpretation of Gaussian output (e.g., you can use it to plot properties, animate vibrations, visualize computed spectra, etc.).

Using

Use the module name gaussian to discover versions available and to load the application.

Selecting the Correct Gaussian Module

Version

Cluster

 

Version

Cluster

 

gaussian/16.AVX2.b01

beartooth, teton

This module is compiled for AVX2 compatible nodes - which has been tested on the teton and teton-cascade partitions.

gaussian/16.AVX.b01

teton

This module is compiled for AVX compatible nodes - which can be used across all nodes on Teton.

gaussian/103

teton

This module provides access to the Gaussian 09 Chemistry software.

Read Advanced Vector Extensions for an introduction to the difference between AVX and AVX2.

Multicore

Gaussian can be run across multiple cores and nodes. Modify the various parameters according to your needs. Also, make sure these match up with the input parameters you're using that get passed into the gaussian application, for example:

%nprocshared==16 %mem=60GB

These parameters are typically defined within the .gjf files.

Remember to use the following form of the command srun g16 ...

GPUs

As stated on the Using GPUsGaussian 16 can use NVIDIA K40, K80, P100 (Rev. B.01), V100 (Rev. C.01) and A100 (Rev. C.02) GPUs under Linux. Earlier GPUs do not have the computational capabilities or memory size to run the algorithms in Gaussian 16.“. We have successfully tested using the P100s on both Beartooth and Teton. Bare in mind, where older GPUs are not supported, the same is true for newer GPUs. We have not been able to successfully run a test using the newer A30s on Beartooth.

Essentially to use GPUs you have to allocate the GPU device(s) to a specific CPUs. The “Optimizing the runtime of your jobs“ section at https://wiki.hpcuser.uni-oldenburg.de/index.php?title=Gaussian_2016 provides a good example on how to identify the CPUs your job is running on, and then how to update the %CPU and %GPUCPU parameters within your .gjf input file.

Memory Considerations

  • The amount of memory you require is a bit of a dark-art and will depend on your input files and number of cores requested, so this does take an element of experimenting and analysis.

  • The freqmem utility takes parameters for a frequency calculation and determines the amount of memory required to complete all steps in one pass for maximum efficiency. Use this to approximate memory requirements.

  • According to the Gaussian 16 Rev. C.01 Release Notes under the Parallel Perf. tab: The memory allocation section recommends setting %mem to half the total memory you allocate for your job. Or, in other words, once you've approximated your memory needs for gaussian, then within the batch script request twice as much.

Potential Issues

galloc: could not allocate memory.: Cannot allocate memory

If you get an error of the form:

galloc: could not allocate memory.: Cannot allocate memory Error: segmentation violation rax 0000000000000000, rbx 000000000154c549, rcx 0000153fedae555b rdx 0000000000000000, rsp 00007ffcb75b39a8, rbp 000000000560d380 rsi 000000000000000b, rdi 0000000000184ae6, r8 0000153fede83860 r9 0000153fee645940, r10 0000000000000008, r11 0000000000000202 r12 00007ffcb75b3a70, r13 00000000213a2f80, r14 0000000004612650 r15 0000000004612650 /lib64/libpthread.so.0(+0x12cf0) [0x153fee21bcf0] /lib64/libc.so.6(kill+0xb) [0x153fedae555b] /apps/u/opt/linux/gaussian/16-b.01/AVX2/g16/l101.exe() [0x4a4699] /apps/u/opt/linux/gaussian/16-b.01/AVX2/g16/l101.exe() [0x4a539a] /apps/u/opt/linux/gaussian/16-b.01/AVX2/g16/l101.exe() [0x4a516e] /apps/u/opt/linux/gaussian/16-b.01/AVX2/g16/l101.exe() [0x4e38ea]

Then you need to increase the amount of memory you are requesting. Either increase the mem-per-cpu or mem values you are defining.

If the amount is over 120G we’d recommend moving from the teton partition to the teton-cascade which can provide up to 760G on some of the compute nodes.

Error: illegal instruction, illegal opcode - Check module and selected partition

If you get an error of the form below:

Error: illegal instruction, illegal opcode rax 00000000000007c1, rbx 00000000000007c9, rcx 00007ffd70e117d0 rdx 000000000396ddc0, rsp 00007ffd70e116a0, rbp 00007ffd70e116a0 rsi 00000000038e6100, rdi 0000000000000000, r8 00000000038cbf70 r9 00000000038cbf70, r10 00007ffd70e117d0, r11 000000000396ddc0 r12 00007ffd70e1d980, r13 00000000038c4e88, r14 00007ffd70e117d0 r15 000000000396ddc0 /lib64/libpthread.so.0(+0xf5e0) [0x2abf903875e0] /apps/u/opt/gaussian16-b.01/AVX2/g16/l1.exe() [0x49095f] /apps/u/opt/gaussian16-b.01/AVX2/g16/l1.exe() [0x490b48] /apps/u/opt/gaussian16-b.01/AVX2/g16/l1.exe() [0x40ef9d] /apps/u/opt/gaussian16-b.01/AVX2/g16/l1.exe() [0x40b6d4] /apps/u/opt/gaussian16-b.01/AVX2/g16/l1.exe() [0x40b137] /apps/u/opt/gaussian16-b.01/AVX2/g16/l1.exe() [0x40b084] /lib64/libc.so.6(__libc_start_main+0xf5) [0x2abf908b7c05] /apps/u/opt/gaussian16-b.01/AVX2/g16/l1.exe() [0x4057f9]

Then you have likely loaded the AVX2 module but have not explicitly requested to use the Teton partition.
Add #SBATCH --partition=teton or teton-cascade to your Slurm related script.

GaussView

"GaussView 6 is the latest iteration of a graphical interface used with Gaussian. It aids in the creation of Gaussian input files, enables the user to run Gaussian calculations from a graphical interface without the need for using a command-line instruction, and helps in the interpretation of Gaussian output (e.g., you can use it to plot properties, animate vibrations, visualize computed spectra, etc.)."

GaussView can be run from an Interactive Desktop from our SouthPass service. Once your have started an Interactive Desktop session, open a terminal, load your gaussian module and then type gv from the command-line.