Building the GAMESS with Intel® Compilers, Intel® MKL and Intel® MPI on Linux

Introduction :
This document explains how to build GAMESS using the Intel Software products:
Intel® C++ Compiler for Linux,
Intel® Fortran Compiler for LINUX,
Intel® MKL,
Intel® MPI for Linux.

Version :
GAMESS version January 12, 2009 R3 for 64 bit IA64/x86_64.

Obtaining Source Code :
The GAMESS sources can be downloaded here.

Prerequisites :
Should be installed Intel® Compilers with Intel® MKL and Intel® MPI for Linux.

Environment Set Up :
Environment variables for the Intel® C++ Compiler Professional Edition for Linux, Intel® Fortran Compiler Professional Edition for Linux and Intel® MPI should be set.
$export INTEL_COMPILER_TOPDIR="/opt/intel/Compiler/11.1/046"
$. $INTEL_COMPILER_TOPDIR/bin/intel64/
$. $INTEL_COMPILER_TOPDIR/bin/intel64/
$. /opt/intel/impi/

Building the Application :
1)Copy/move tar file gamess-current.tar.gz to the directory /opt.

2)Decompress source files
$ tar -zxvf gamess-current.tar.gz
$cd ./gamess
4) Creating actvte.x file:
$cd ./tools
$cp actvte.code actvte.f
Replace all "*UNX" by " "(4 spaces with out " ") in the file actvte.f. Can be used any text editor.
$ifort -o actvte.x actvte.f
$rm actvte.f
$cd ..
5)Building the Distributed Data Interface(DDI) with Intel® MPI:
$cd ./ddi
a) Editing file ./compddi.
Set machine type (approximately line 18):
set TARGET=linux-ia64
Set MPI communication layer (approximately line 48):
set COMM = mpi
Set include directory for Intel® MPI (approximately line 105):
set MPI_INCLUDE_PATH = '-I/net/spdr62/opt/spdtools/impi/intel64/3.2.011/include64'
b)Build DDI with Intel® MPI
$ ./compddi >&compddi.log
c) If building completed successfully then library libddi.a will appear. Otherwise check compddi.log for errors.
d) $cd ..
6) Compiling the GAMESS:
a) Editing file ./comp
Set machine type (approximately line 15):
set TARGET=linux-ia64
Set the GAMESS root directory (approximately line 16):
chdir /opt/gamess
Uncomment line 1461:
b) Editing file ./compall:
Set machine type (approximately line 16):
set TARGET=linux-ia64
Set the GAMESS root directory (approximately line 17):
chdir /opt/gamess
Set to use Intel® C++ Compiler (approximately line 70):
if ($TARGET == linux-ia64) set CCOMP='icc'
c) Compiling the GAMESS:
$compall >&compall.log
Check file compall.log for errors.
$cd ..
7)Liniking the GAMESS with Intel® Software products:
a) Editing file ./lked
Set machine type (approximately line 18):
set TARGET=linux-ia64
Set the GAMESS root directory (approximately line 19):
chdir /opt/gamess
Set MKL environment (approximately line 509):
setenv MKLPATH /net/spdr62/opt/spdtools/compiler/cpro/Compiler/11.1/046/mkl/lib/em64t
set mklver=10
Set the message passing libraries in a single line (approximately line 714):
set MSG_LIBRARIES='../ddi/libddi.a -L/net/spdr62/opt/spdtools/impi/intel64/3.2.011/lib64 -lmpi -lmpigf -lmpigi -lrt -lpthread'
b) Link the GAMESS
$./lked >&lked.log
If linking completed successfully then executable file gamess.00.x will appear. Otherwise check lked.log for errors.

Running the Application :
This section below describes how to execute GAMESS with Intel® MPI. For further information check file ./ddi/readme.ddi.
For the testing GAMESS will be used script rungms as the base.
Only few amends are needed.
Set the target for execution to mpi (line 59):
set TARGET=mpi
Set a directory SCR where large temporary files can reside(line 60):
set SCR=/opt/gamess/tests
Correct the setting environment variables ERICFMT and MCPPATH (lines 127and 128):
setenv ERICFMT /opt/gamess/ericfmt.dat
setenv MCPPATH /opt/gamess/mcpdata
Replace all “~$USER” by “/opt/gamess/tests”. Or by other directory.
NOTE: Directory /opt/gamess/tests/scr should exist. If no then create it.
Replace all “/home/mike/gamess” by “/opt/gamess”.
Correct the setting environment variables for Intel® MKL and MPI (lines 948 and 953):
setenv LD_LIBRARY_PATH /opt/Compiler/11.1/046/mkl/lib/em64t
setenv LD_LIBRARY_PATH /opt/intel/impi/intel64/3.2.011/lib64:$LD_LIBRARY_PATH
Correct setting environment variables to execution Intel® MPI path (line 954):
E.g. set path=(/opt/intel/impi/intel64/3.2.011/bin64 $path)
Now choose the testcase from directory ./tests and run GAMESS.
$./rungms exam08
The output data will be stored in the directory /opt/gamess/scr.

3) To execute GAMESS on 2 or more processes on 1 node:
$ ./rungms exam08 00 2
For more complete information about compiler optimizations, see our Optimization Notice.


Kirill Mavrodiev (Intel)'s picture

Building and Running the GAMESS with Intel(R) Fortran Compiler for Linux v.11.1.056 passed successfully.

anonymous's picture

I believe point 3 of the last section ("Running the Application") is incorrect. The number in the gamess executable file has nothing to do with the number of processors. It is meant for compiling several different versions in the same source tree. The two numerical arguments for rungms are the version number and the number of processors. So a correct version of the last example would be:

$./rungms exam08 00 2

which uses the executable gamess.00.x with 2 processors.

Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.