|
Version Information
|
|
|
This guide was created for the GAMESS December 12, 2003 version and PGI Release 5.1-3 pgf90 and pgcc 32-bit compilers on an x86 system running Linux. The guide was updated on July 14, 2004 for the 5.2 release.
|
|
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 molecules. 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 GAMESS download page. 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 (compall, comp, lked, rungms, runall) and one source file (ddisoc.c). 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.
|
compall
|
-
Line 15: set the "TARGET" to "linux-pc".
-
Line 16: replace the "/u1/mike/gamess" with the root directory of your GAMESS package.
-
Line 34: set "CCOMP" to "pgcc".
Note: You may need to explicitly set your PATH environment variable as well
setenv PATH $PATH\:/usr/pgi/linux86/[5.1|5.2]/bin #Set to your path
-
If using IPA, add the "-fast -Mipa=fast,safe" options to the compilation of zunix (line 66), ddikick (line 132), and ddisoc (line 133). The actual option used should match the options you use in compiling the Fortran source (See below).
|
|
comp
|
-
Line 17: set the "TARGET" to "linux-pc".
-
Line 18: replace the "/u1/mike/gamess" with the root directory of your GAMESS package.
-
Line 44: If you wish to use BLAS library, i.e. "-lblas", set "BLAS3=true".
-
Comment out lines 763 to 777 (g77 configuration)
-
Add the following under the Portland Group compiler section (line 842):
if ($TARGET == linux-pc) then setenv PATH $PATH\:/usr/pgi/linux86/5.1/bin #Set to your path set OPT = '-fast' if ($MODULE == qeigen) then mv qeigen.f qeigen.junk sed -e "s/Q-/D-/g" \ -e "s/Q+00/D+00/g" \ -e "s/REAL\*16/DOUBLE PRECISION/" qeigen.junk > qeigen.f rm -f qeigen.junk endif set echo # Compile in the object directory mv $MODULE.f object/$MODULE.f chdir object pgf90 $OPT -Mfixed -c $MODULE.f chdir ../ unset echo endif Be sure to change your path to the location of the PGI compilers.
Note that we have modified the script to build objects in the object directory to facilitate the use of IPA. At line 1130, the scripts attempts to copy the object file from the base directory to the object directory. Since the object file does not exist in the base directory, an error will be emitted. You can either comment out line 1130 or ignore the error.
Set your options as needed. We recommend using "-fast". See Known Issues for more information about known optimization issues. You can use either pgf77 or pgf90. Remove "-Mfixed" if you prefer pgf77.
|
|
source/ddisoc.c
|
Under the "LINUX" definitions (lines 188 to 199) remove the second underscore from the function names. For example, change #define SOC_INIT soc_init__ to #define SOC_INIT soc_init_
|
|
lked
|
-
Line 17: set the "TARGET" to "linux-pc".
-
Line 18: replace the "/u1/mike/gamess" with the root directory of your GAMESS package.
-
Line 279: set the "LDR" to either pgf77 or pgf90.
-
Line 280: set the "LDOPTS" to the same options you used in the "comp" script and add "-lblas -lpthread". We recommend using "-fast -lblas -lpthread".
-
Line 289: set "QUICHE" to 'zunix.o' by removing 'endfile.o'.
-
Line 290: Add the following two lines when using the "-lblas" library:
set BLAS=' ' # or set BLAS='blas.o' if BLAS3=false in comp
set LIBRARIES=' '
-
You may also need to explicitly set your path to the compiler binaries:
setenv PATH $PATH\:/usr/pgi/linux86/[5.1|5.2]/bin #Set to your path
|
|
rungms
|
-
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 33) to this directory. Note that this should be an absolute path.
-
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.
-
Line 227: Set the "GMSPATH" to the location of the ddikick and gamess executables.
|
|
runall
|
Change the "chdir" to the location of the ddikick and gamess executables.
|
|
|
Building GAMESS
|
|
|
|
Steps to build GAMESS
|
|---|
-
Configure your installation as described in the Configuration Section.
-
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 ../
-
Type "compall" from the command line to compile the source.
-
Compile the "zheev.f" file in the object directory with your options plus "-Kieee" if using >= "-O2".
-
5.1 only: Compile the "nameio.f" file in the object directory without "-Mipa=[option]" if using IPA.
-- See Known Issues for more information about these work arounds.
-
Type "lked" from the command line to link the source.
-
5.1 only: Repeat steps 3-6 when using IPA.
|
|
If you see the follow link error:
|
ddi.o(.text+0x5d): In function `ddi_pbeg_': : undefined reference to `soc_init_'
|
you've forgotten to remove the second underscore from the ddisoc.c file.
Your gamess executables are "ddikick.x" and "gamess.00.x".
|
|
Running GAMESS
|
|
|
To run the 35 example data sets, use the "runall" command. Note that exam19 will hang when GAMESS is compiled at an optimization >= "-O2" and if the "zheev.f" is not compiled using "-Kieee". See Known Issues for more information. The output can be found in the "eN.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 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.
-
"nameio.f" has a compilation error when using "-Mipa=[option]".
When using IPA, a compiler bug can prevent the "nameio.f" from compiling with IPA during the second compilation step. If this occurs, this file must be compiled without IPA before re-linking. This has been fixed for release 5.2.
-
Incorrect results with "-fastsse" and "-Mvect"
A bug in the vectorizer can cause GAMESS to produce incorrect results. Vectorization is enabled using the "-Mvect=[option]" flag and is part of "-fastsse". You can set your options to "-fast -Mscalarsse -Mcache_align -Mflushz" which is equivalent to "-fastsse" less "-Mvect=sse".
-
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" will cause several source files to grow too large for compilation and should not be used.
|
|