General Atomic and Molecular Electronic Structure System HPC Installation

GAMESS (General Atomic and Molecular Electronic Structure System (GAMESS)) is a general ab initio quantum chemistry package. You will need to agree to the license prior to download, which will provide a link to gamess-current.tar.gz

Download and extract, load the environment variables for atlas and gcc.


cd /usr/local/src/
tar gamess-current.tar.gz
cd gamess
module load atlas/3.10.2
module load gcc/4.9.1

One discovery is the version of gamess being installed wasn't quite up-to-date with the version of atlas being used. Check this first, otherwise it will fail at the last step (which itself is a painful discovery)!


cd /usr/lib64/atlas/
ln -s libf77blas.so.3 libf77blas.so

Update the four scripts: comp, compall, lked, runall with your favourite text editor. I suggest vim -p comp compall lked runall and ensure the following:.


set TARGET=linux64
chdir /usr/local/gamess/20120501

Update the rungms script and ensure the following:


set TARGET=sockets
set SCR=/tmp
setenv ERICFMT /usr/local/gamess/20120501/ericfmt.dat
setenv MCPPATH /usr/local/gamess/20120501/mcppath
if ($os == Linux) set GMSPATH=/usr/local/gamess/20120501/

Edit and compile the 'Activate' program. The sed command below has four spaces between the slashes, replacing all lines beginning with "*UNX" with four blanks.


cd /usr/local/src/GAMESS/gamess/tools
sed "s/^*UNX/\ \ \ \ /g" actvte.code >actvte.f
gfortran -o actvte.x actvte.f

Compile GAMESS itself with the following. The setpath is just in case /bin/comp may also be in path.


cd /usr/local/src/GAMESS/gamess/
/bin/csh
setenv PATH .:${PATH}
./compall

Then edit ddikick...


cd /usr/local/src/GAMESS/gamess/ddi

.. to ensure the following:


set TARGET = linux64
set COMM = sockets
set MAXCPUS = 16
set MAXNODES = 128

And compile..


./compddi

Which should result with


...
DDI compilation ended successfully.
Fri May 22 10:41:37 EST 2015
6.169u 1.227s 0:07.55 97.7% 0+0k 32+11864io 1pf+0w

Move the result up a directory level and link gamess


mv ddikick.x ../
cd ..
lked gamess 00

Now change to from the source and build directory to the application directory and copy everything across, with permissions.


cd /usr/local/gamess/20120501
cp -r /usr/local/src/GAMESS/gamess/* .
chmod a+rx * -R

Create module file and link.


cd /usr/local/Modules/modulefiles/gamess
ln -s .base 20120501

The .base takes the following form


#%Module1.0#####################################################################
##
## gamess modulefile
##
set ver [lrange [split [ module-info name ] / ] 1 1 ]
set name [lrange [split [ module-info name ] / ] 0 0 ]
set loading [module-info mode load]
set desc [join [read [ open "/usr/local/Modules/modulefiles/$name/.desc" ] ] ]
proc ModulesHelp { } {
puts stderr "\tThis module sets the envinronment for gamess v$ver"
}
module-whatis "$desc (v$ver)"
prepend-path PATH /usr/local/$name/$ver/
setenv GMSPATH /usr/local/$name/$ver/
set-alias rungms /usr/local/$name/$ver/rungms

Finally (this could have done this first, but this saves the above instructions for future examples)


cd /usr/local/src/GAMESS
mv gamess-current gamess-20120501

Run a test case. Login as a normal user. It will need to run twice, after the first run delete the .dat file. e.g.,


mkdir -r gamess/scr
cd gamess
rungms example.inp
rm /home/lev/scr/example.dat
rungms example.inp

And it will conclude with...


----------------------------------------
CPU timing information for all processes
========================================
0: 0.094985 + 1.172821 = 1.267806
----------------------------------------
ddikick.x: exited gracefully.
unset echo
----- accounting info -----
Fri May 22 15:09:54 EST 2015
Files used on the master node trifid were:
-rw-r--r-- 1 lev vpac 1153 May 22 15:09 /tmp/example.F05
-rw-r--r-- 1 lev vpac 180016 May 22 15:09 /tmp/example.F08
-rw-r--r-- 1 lev vpac 1341520 May 22 15:09 /tmp/example.F10
0.148u 0.129s 0:04.61 5.6% 0+0k 8+16io 0pf+0w

The following serves as an example.inp file.

! EXAM01.
!    1-A-1 CH2    RHF geometry optimization using GAMESS.
!
!    Although internal coordinates are used (COORD=ZMAT),
!    the optimization is done in Cartesian space (NZVAR=0).
!    This run uses a criterion (OPTTOL) on the gradient
!    which is tighter than default, but very safe.
!
!    This job tests the sp integral module, the RHF module,
!    and the geometry optimization module.
!
!    Using the default search METHOD=STANDARD,
!    FINAL E= -37.2322678015, 8 iters, RMS grad= .0264308
!    FINAL E= -37.2351919062, 7 iters, RMS grad= .0202617
!    FINAL E= -37.2380037239, 7 iters, RMS grad= .0013100
!    FINAL E= -37.2380352917, 8 iters, RMS grad= .0007519
!    FINAL E= -37.2380396312, 5 iters, RMS grad= .0001615
!    FINAL E= -37.2380397693, 5 iters, RMS grad= .0000067
!    FINAL E= -37.2380397698, 3 iters, RMS grad= .0000004
!
 $CONTRL SCFTYP=RHF RUNTYP=OPTIMIZE COORD=ZMT NZVAR=0 $END
 $SYSTEM TIMLIM=1 $END
 $STATPT OPTTOL=1.0E-5  $END
 $BASIS  GBASIS=STO NGAUSS=2 $END
 $GUESS  GUESS=HUCKEL $END
 $DATA
 Methylene...1-A-1 state...RHF/STO-2G
 Cnv  2
 C
 H  1 rCH
 H  1 rCH  2 aHCH
 rCH=1.09
 aHCH=110.0
 $END

If you get a message like ..


**** ERROR, NO $DATA GROUP WAS FOUND EXECUTION OF GAMESS TERMINATED -ABNORMALLY-

... you need to add a space in front of $DATA

Update for December 2014 Release

By December 2014 GAMESS has updated its installation method...


# 5 Dec 2014 - script to compile one GAMESS source file
# Invoke this script by './comp MODULE >& MODULE.log &'.
#
# This script no longer requires customization, as it starts off by
# reading information about the compilation from a configuration file.

Run the configuration script and answer as follows:


cd /usr/local/src/GAMESS
tar xvf gamess-current.tar.gz
cd gamess
module load atlas/3.10.2
module load gcc/4.9.1
./configure

First question ("what is your name"?):

please enter your target machine name: linux64

Second question ("what is your quest?"):

Where is the GAMESS software on your system?
GAMESS directory? [/usr/local/src/GAMESS/gamess]

And again...

Please provide the name of the build locaation.
This may be the same location as the GAMESS directory.
GAMESS build directory? [/usr/local/src/GAMESS/gamess]

Follow the bouncing ball...:

This will be used as the middle part of the binary's name,
for example: gamess.00.x

Version? [00]

Now it gets all very wrong ("What... is the air-speed velocity of an unladen swallow?)

type 'which gfortran' to look for GNU's gfortran (a good choice),
type 'which ifort' to look for Intel's compiler (a good choice),
type 'which pgfortran' to look for Portland Group's compiler,
type 'which pathf90' to look for Pathscale's compiler.

Now if you follow the instructions you will get..


# which gfortran
/usr/local/gcc/4.9.1/bin/gfortran

But if you enter that... It will result in an error. Instead just type "gfortran". *sigh*. Continue!

Please type 'gfortran -dumpversion' or else 'gfortran -v' to
detect the version number of your gfortran.
...
Please enter only the first decimal place, such as 4.6 or 4.8:

Ignore the fact you have 4.9.1 and enter 4.9.

Next question ("What is the capital of Assyria? Actually there was several...)

Enter your choice of 'mkl' or 'atlas' or 'acml' or 'none': atlas
Where is your Atlas math library installed? A likely place is
/usr/lib64/atlas
Please enter the Atlas subdirectory on your system: /usr/local/atlas/3.10.2-gcc/lib

please hit to compile the GAMESS source code activator

gfortran -o /usr/local/src/GAMESS/gamess/tools/actvte.x actvte.f
unset echo
Source code activator was successfully compiled.

please hit to set up your network for Linux clusters.

If you have an MPI library correctly installed,
choose 'mpi'.

communication library ('sockets' or 'mpi')?

Go on, choose MPI. Then you discover..

The MPI libraries which work well on linux64/Infiniband are
Intel's MPI (impi)
MVAPICH2
SGI's mpt from ProPack, on Altix/ICE systems
Other libraries may work, please see 'readme.ddi' for info.
The choices listed above will compile and link easily,
and are known to run correctly and efficiently.

Enter 'sockets' if you just changed your mind about trying MPI.

Enter MPI library (impi, mvapich2, mpt, sockets): sockets

Go back to sockets. *sigh*

64 bit Linux builds can attach a special LIBCCHEM code for fast MP2 and CCSD(T) runs.... Do you want to try LIBCCHEM? (yes/no):

Your configuration for GAMESS compilation is now in
/usr/local/src/GAMESS/gamess/install.info

Now for the compilation side.


cd /usr/local/src/GAMESS/gamess/ddi
./compddi
mv ddikick.x ..

Compile all of the GAMESS source code


cd /usr/local/src/GAMESS/gamess/
./compall

Link an executable form of GAMESS by the command


cd /usr/local/src/GAMESS/gamess/
./lked gamess 00

Edit 'rungms' and change the following:


set SCR=/scr/$USER
set USERSCR=/u1/$USER/scr
set GMSPATH=/u1/mike/gamess

to


set SCR=/tmp
set USERSCR=/home/$USER/scr
set GMSPATH=/usr/local/gamess/20141205

Copy to an application directory, modify permissions, create a new module, and test.


mkdir -p /usr/local/gamess/20141205
cd /usr/local/gamess/20141205
cp -r /usr/local/src/GAMESS/gamess/* .
chmod a+rx * -R

Create module file and link.


cd /usr/local/Modules/modulefiles/gamess
ln -s .base 20141205
mv /usr/local/src/GAMESS/gamess /usr/local/src/GAMESS/20141205