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

By Ronald W Green,

Published:01/05/2011   Last Updated:01/05/2011

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

Product and Performance Information


Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804