PGI Guide to GAMESS

This guide is intended to help PGI customers build and run the General Atomic and Molecular Electronic Structure System (GAMESS) using PGI 6.0 compilers on a 32-bit x86 Linux system.

Version Information
  This guide was created for the GAMESS November 22, 2004 version and PGI Release 6.0 pgf90 and pgcc 32-bit compilers on an x86 system running Linux.
Application Notes
  Information about GAMESS can be found at the GAMESS home page. GAMESS is maintained by the members of the Gordon research group at Iowa State University. From the GAMESS Home page:

GAMESS is a program for ab initio quantum chemistry. Briefly, GAMESS can compute SCF wave functions ranging from RHF, ROHF, UHF, GVB, and MCSCF. Correlation corrections to these SCF wave functions include Configuration Interaction, second order perturbation theory, and Coupled-Cluster approaches, as well as the Density Functional Theory approximation. Analytic gradients are available, for automatic geometry optimization, transition state searches, or reaction path following. Computation of the energy hessian permits prediction of vibrational frequencies. The chart below summarizes the program's present capabilities for obtaining wave functions, applying correlation treatments, and computing derivatives. A variety of molecular properties, ranging from simple dipole moments to frequency dependent hyperpolarizabilities may be computed. Many basis sets are stored internally, and together with effective core potentials, all elements up to Radon may be included in molec ules. Several graphics programs are available for viewing of the final results. Many of the computational functions can be performed using direct techniques, or in parallel on appropriate hardware.

Obtaining the Source Code
  Information on obtaining the GAMESS source code can be found at the US Government's Ames Laboratory. The Ames lab requires you to register before downloading the source code.
Dependencies
  No known dependencies.
Configuration and Set-up Information
  Once unpacked, please read the enclosed documentation (*.DOC) files and the "readme.unix" file in the "misc" directory.  To build and run GAMESS, you will first need to edit several scripts (ddi/compddi, compall, comp, lked, rungms, runall). Due to license restrictions on the source code, we cannot make available pre configured versions of these files. Note that the line numbers may change with each release of GAMESS.

ddi/compddi
  1. Line 17: set the "TARGET" to "linux-pc".
  2. Line 410,411: set "CC" to pgcc and the "CFLAGS" to
    set CFLAGS="-DLINUX -fast -Mvect -Mcache_align -Mscalarsse -I./include"
    If you have a non-SSE system or are not using "-fastsse" below use:
    set CFLAGS="-DLINUX -fast -I./include"
compall
  1. Line 15: set the "TARGET" to "linux-pc".
  2. Line 16: replace the "/u1/mike/gamess" with the root directory of your GAMESS package.
  3. Line 34: set "CCOMP" to "pgcc".
  4. Add the compilation flag "-fastsse" or "-fast" on non-SSE enabled systems to the compilation of zunix (line 68).
comp
  1. Line 17: set the "TARGET" to "linux-pc".
  2. Line 18: replace the "/u1/mike/gamess" with the root directory of your GAMESS package.
  3. Line 47: If you wish to use a BLAS library, i.e. "-lblas", set "BLAS3=true".
  4. Comment out lines 828 to 844 (g77 configuration)
  5. Uncomment out lines 895 to 913 and change '-O2' to '-fastsse' or '-fast' on non-SSE systems. If using '-fastsse' you may comment out line 909. Adding "-Kieee" to the compilation of "zheev" fixes a known issue which only appears when using the x87 FPU. See Known Issues for more information about known optimization issues. You can use either pgf77 or pgf90 but add "-Mfixed" if you prefer pgf90.

lked
  1. Line 17: set the "TARGET" to "linux-pc".
  2. Line 18: replace the "/u1/mike/gamess" with the root directory of your GAMESS package.
  3. Line 280: set the "LDR" to either pgf77 or pgf90.
  4. Line 281: set the "LDOPTS" to the same options you used in the "comp" script plus "-lblas", i.e. "-fastsse -lblas", or "-fast -lblas".
  5. Line 300: Add the following two lines when using the "-lblas" library:
    set BLAS=' '     # or set BLAS='blas.o' if BLAS3=false in comp 
    set LIBRARIES=' '
rungms
  1. Determine where your scratch directory is located. For our testing purposes, we created a "scr" directory in the local gamess directory. Set the "SCR" variable (line 38) to this directory. Note that this should be an absolute path.
  2. In the file assignment section, you should change files starting with "~/scr" to the actual directory location. For our tests, we used the local scr directory. You'll also need to set the "ERICFMT" path to the ericfmt.dat included with GAMESS.
  3. Line 260: Set the "GMSPATH" to the location of the gamess executables.
runall Change the "chdir" to the location of the gamess executable.
Building GAMESS
 
Steps to build GAMESS
  1. Configure your installation as described in the Configuration Section.
  2. Ensure the PGI bin directory is in your PATH.
  3. Build the activate utility in the tools directory:
    cd tools 
    cp actvte.code actvte.f 
    vi actvte.f 
    :%s/^\*UNX/    / <--- 4 blanks between the strokes 
    :wq 
    pgf77 -o actvte.x actvte.f 
    rm actvte.f 
    cd ../ 
    
  4. Enter the "ddi" directory and type "./compddi". Copy "ddikick.x" to the main directory.
  5. Type "compall" in the main directory to compile the source.
  6. Type "lked" from the command line to link the source.
Your gamess executables are "ddikick.x" and "gamess.00.x".
Running GAMESS
  To run the 37 example data sets, use the "runall" command.  Note that exam19 will hang when GAMESS is compiled without "-fastsse" and if the "zheev.f" is not compiled using "-Kieee".  See Known Issues for more information.  Also, to run exam36 you may need to increase the maximum shared memory size of your system. Please refer to ddi/readme.ddi for more information. The output can be found in the "examN.log" files.
Verifying Correctness
  The "TESTS.DOC" file gives a full explanation on verifying the example program's output.  The abbreviated version is as follows.  The "INPUT CARD" portion of each log file contains some expected values.  You need to search the output to see if these values match the actual output. Note that there are difference between the log file's expected answer and the "TESTS.DOC" file's expected answers.  You should use the log file's expected values.  Also, there might be slight precision variances between the actual and expected values. Precision can change depending upon your system and compiler optimization. See the Precision FAQ for more information.
Known Issues and Limitations
  The following are a list of known issues when using the PGI compilers with GAMESS.  We have included work-arounds where available.
  • Example 19 hangs during execution at >= "-O2"
    Adding "-Kieee" to the compilation options of the "zheev.f" file will allow example 19 to run successfully.  The "DLAMC1" procedure in the "zheev.f" file expects double precision values to be represented in 64-bits.   To aid performance, higher optimizations will try and keep these values in an 80-bit x87 floating point stack register.  The problem occurs when the A and C values are compared at line 4889.  C remains in the floating point stack, is not equal to A, and causes the loop to be skipped.  C then gets truncated to 64-bits when stored to memory and is now equal to A.  Since C equals A, LBETA gets set to zero at line 4904, which causes an infinite loop at line 4945.  Adding "-Kieee" will force C to be stored, and thus truncated, before it is compared to A. Note that if you compile with "-Mscalarsse" which is included with "-fastsse" floating point computation is performed using SSE rather than x87 and the problem does not occur.
  • Option "-i8" should not be used
    This version of GAMESS is not compatible with the "-i8" flag.  GAMESS presumes that integers are 4 bytes.  Using the "-i8" flag makes the default integer size to 8 bytes which can cause segmentation violations when gamess.00.x executes.
  • Using "-Minline"
    Using "-Minline" with other high level optimizations such as "-fast" can cause several source files to grow too large for compilation and should not be used.