ساخت GAMESS با کامپایلرهای اینتل، Intel® MKL و OpenMPI در لینوکس
پیش نیازهای نرم افزار :
- Intel® C++ Compiler for LINUX,
- Intel® Fortran Compiler for LINUX,
- Intel® MKL,
- OpenMPI for Linux.
پلتفرم :
- IA64/x86_64.
نصب پیش نیازها :
1- اگر واجد شرایط برای دانلود رایگان کامپایلر Intel هستید. نسخه غیر تجاری آن را از اینجا دانلود کنید.
http://linuxtoolkit.blogspot.com/2009/03/free-non-commercial-intel-compiler.html
2- کامپایل کامپایلرهای اینتل با OpenMPI. ساختن OpenMPI را با کامپایلر Intel مشاهده کنید (http://linuxtoolkit.blogspot.com/2009/05/building-openmpi-with-intel-compiler.html). اطمینان حاصل کنید که مسیر شما به درستی نوشته و سورس شده است.
تنظیم محیط اینتل :
من یک اسکریپت intel.sh در مسیر /etc/profile.d/ ایجاد و دستورات زیر را در آن قرار دادم :
# cd /etc/profile.d
# touch intel.sh
# vim intel.sh
ویرایش زیر را انجام دهید
export INTEL_COMPILER_TOPDIR="/opt/intel/Compiler/11.1/069"
. $INTEL_COMPILER_TOPDIR/bin/intel64/ifortvars_intel64.sh
. $INTEL_COMPILER_TOPDIR/bin/intel64/iccvars_intel64.sh
ساختن برنامه :
1. کپی / انتقال فایل tar به gamess-current.tar.gz به دایرکتوری / opt
2. فایل tar را از حال فشرده خارج کنید
# tar -zxvf gamess-current.tar.tar
3- به پوشه gamess بروید
# cd gamess
4- فایل actvte.x را ایجاد کنید
# cd tools
# cp actvte.code actvte.f
# Replace all "*UNX" by " "(4 spaces with out " ") in the file actvte.f
# ifort -o actvte.x actvte.f
# rm actvte.f
# cd ..
5- ایجاد رابط داده توزیع شده (DDI) با OpenMPI:
# cd ddi
# vim compddi
5a- فایل 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 OpenMPI (approximately line 105): ##
## where is mpi header "mpi.h" is located ##
set MPI_INCLUDE_PATH = '-I/usr/mpi/intel/include'
5b- فایل compddi را با OpenMPI کامپایل کنید
## Build DDI with OpenMPI ##
# ./compddi
# cd ..
اگر ساختن با موفقیت اجرا شود، کتابخانه libddi.a پدیدار خواهد شد. در غیر این صورت compddi.log را برای خطاها بررسی کنید.
6- کامپایل GAMESS :
6a- فایل comp را ویرایش کنید
vim comp
## Set machine type (approximately line 15): ##
set TARGET=linux-ia64
## Set the GAMESS root directory (approximately line 16): ##
chdir /opt/gamess
## Uncomment (approximately line 1461): ##
setenv MKL_SERIAL YES
6b- فایل 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'
6c- کامپایل GAMESS :
# ./compall
# cd ..
7- لینک کردن GAMESS با استفاده از محصولات نرم افزاری Intel® :
7a- فایل lked را ویرایش کنید
## Set machine type (approximately line 18): ##
set TARGET=linux-ia64
## Set the GAMESS root directory (approximately line 19): ##
chdir /opt/games
## Check the MKL environment (approximately line 511) is correct: for (x86_64)##
setenv setenv MKLPATH `ls -d /opt/intel/mkl/*/lib/em64t`
set mklver=`ls /opt/intel/mkl`
## Set the message passing libraries in a single line (approximately line 710): ##
set MSG_LIBRARIES='../ddi/libddi.a -L/usr/local/lib -lmpi -lpthread'
7b- لینک کردن GAMESS
# ./lked
اگر لینک موفقیت آمیز انجام شود، فایل اجرایی gamess.00.x ظاهر خواهد شد.
8- اجرای نرم افزار
این بخش در زیر نحوه ی اجرای GAMESS را با Intel و OpenMPI توصیف میکند. برای اطلاعات بیشتر فایل ./ddi/readme.ddi. را بررسی کنید.
برای تست GAMESS از اسکریپت rungms به عنوان پایه استفاده می شود.
8a
## 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=/scratch
## 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 /scratch should exist. If no then create it. ##
## Replace all “/home/mike/gamess” by “/opt/gamess”. ##
## Correct the environment variables for Intel® MKL and OpenMPI (lines 948 and 953): ##
setenv LD_LIBRARY_PATH /opt/intel/mkl/10.2.4.032/lib/em64t $LD_LIBRARY_PATH
setenv LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH.
## Correct setting environment variables to execution OpenMPI path (line 954): ##
set path=(/usr/local/bin $path)
حالا testcase را از دایرکتوری tests/. انتخاب و GAMESS را اجرا کنید.
/. $ rungms exam08
داده های خروجی در پوشه /scratch ذخیره می شود.
برای اجرای GAMESS بر روی 2 یا بیشتر process در 1 گره:
/. $rungms exam08 00 2
Ifort : Intel Fortran Compiler, also known as IFORT, is a group of Fortran compilers from Intel for Windows, OS X, and Linux.