GAMESS
- The General Atomic and Molecular Electronic Structure System (GAMESS) is a general ab initio quantum chemistry package.
- Официальный сайт разработчиков - http://www.msg.chem.iastate.edu/gamess/gamess.html
- Лицензионное соглашение позволяет использовать GAMESS бесплатно, но только сотрудникам конкретной организации, получившей эту лицензию. После регистрации для скачивания доступен исходный код программы, но его передача сотрудникам других организаций запрещена, вместо этого следует сообщать адрес сайта разработчиков, чтобы желающие самостоятельно регистрировались и лицензировали своё использование GAMESS. Поскольку у нас работают сотрудники разных организация, GAMESS не может быть установлен централизованно. Вместо этого ниже приведены инструкции для самостоятельной компиляции на примере версии 'GAMESS version December 5, 2014 R1 for 64 bit (x86_64 compatible) under Linux with gnu compilers'.
- Возможно использование как компилятора gfortran из состава GCC, так и ifort от Intel. В качестве реализации MPI для распараллеливания выполнения между узлами можно использовать OpenMPI, Intel MPI, mvapich2. В качестве математической библиотеки можно использовать или Atlas, или MKL от Intel. Ниже рассматривается вариант использования ifort, Intel MPI и MKL.
Компиляция
Подготовка
- Зарегистрироваться на сайте разработчиков, скачать дистрибутив (файл называется 'gamess-current.tar.gz'). С помощью SCP/SFTP скопировать дистрибутив в свою домашнюю директорию на интерфейсном сервере.
- Подключиться к интерфейсному серверу кластера. Установить используемую реализацию MPI (выполняется однократно):
mpi-selector --set intel_mpi-5.0.1.035
- Дальнейшие действия по компиляции будут производиться на вычислительных узлах, а не на интерфейсном сервере. Запустить задачу в интерактивном режиме:
qsub -I -l select=ncpus=1:mem=2g -l walltime=5:0:0
- После получения доступа к узлу до запуска 'mc' настроить переменные окружения для работы с Intel Composer XE, выполнив:
source /opt/intel/composerxe/bin/compilervars.sh intel64
- Узнать, какая версия ifort будет использоваться (это потребуется позже):
ifort -v
ifort version 15.0.2
- После этого при желании можно запустить 'mc'.
- Разархивировать дистрибутив:
tar -xzf gamess-current.tar.gz -C ~/
- Перейти в появившуюся директорию:
cd ~/gamess
- Работа с GAMESS описана в файлах с расширением 'DOC'. Первый файл - INTRO.DOC, а описанию установки посвящён PROG.DOC. Но в самом его начале написано, данный файл содержит достаточно общую информацию, а конкретные инструкции по установке надо смотреть в файле ~/gamess/machines/readme.unix. Рекомендуется открыть этот файл на своём персональном компьютере и просматривать параллельно с описанным на данной странице.
config
- На этом этапе запускается скрипт 'config', который спрашивает о конфигурации, которая будет использоваться (реализация компилятора, MPI, ….).
- Запустить скрипт:
cd ~/gamess ./config
Ниже приведено выводимое скриптом и что нужно вводить в ответ (жирным). В некоторых случаях нужно просто нажимать клавишу 'Enter':
This script asks a few questions, depending on your computer system, to set up compiler names, libraries, message passing libraries, and so forth. You can quit at any time by pressing control-C, and then <return>. Please open a second window by logging into your target machine, in case this script asks you to 'type' a command to learn something about your system software situation. All such extra questions will use the word 'type' to indicate it is a command for the other window. After the new window is open, please hit <return> to go on.
Нажать 'Enter'
GAMESS can compile on the following 32 bit or 64 bit machines: axp64 - Alpha chip, native compiler, running Tru64 or Linux cray-xt - Cray's massively parallel system, running CNL hpux32 - HP PA-RISC chips (old models only), running HP-UX hpux64 - HP Intel or PA-RISC chips, running HP-UX ibm32 - IBM (old models only), running AIX ibm64 - IBM, Power3 chip or newer, running AIX or Linux ibm64-sp - IBM SP parallel system, running AIX ibm-bg - IBM Blue Gene (Q model), these are 64 bit systems linux32 - Linux (any 32 bit distribution), for x86 (old systems only) linux64 - Linux (any 64 bit distribution), for x86_64 or ia64 chips AMD/Intel chip Linux machines are sold by many companies mac32 - Apple Mac, any chip, running OS X 10.4 or older mac64 - Apple Mac, any chip, running OS X 10.5 or newer sgi32 - Silicon Graphics Inc., MIPS chip only, running Irix sgi64 - Silicon Graphics Inc., MIPS chip only, running Irix sun32 - Sun ultraSPARC chips (old models only), running Solaris sun64 - Sun ultraSPARC or Opteron chips, running Solaris win32 - Windows 32-bit (Windows XP, Vista, 7, Compute Cluster, HPC Edition) win64 - Windows 64-bit (Windows XP, Vista, 7, Compute Cluster, HPC Edition) winazure - Windows Azure Cloud Platform running Windows 64-bit type 'uname -a' to partially clarify your computer's flavor. please enter your target machine name:
Ввести linux64, нажать Enter
Where is the GAMESS software on your system? A typical response might be /u1/mike/gamess, most probably the correct answer is /mnt/storage/home/login/gamess GAMESS directory? [/mnt/storage/home/login/gamess]
Нажать Enter
Setting up GAMESS compile and link for GMS_TARGET=linux64 GAMESS software is located at GMS_PATH=/mnt/storage/home/login/gamess Please provide the name of the build locaation. This may be the same location as the GAMESS directory. GAMESS build directory? [/mnt/storage/home/login/gamess]
Нажать Enter
Please provide a version number for the GAMESS executable. This will be used as the middle part of the binary's name, for example: gamess.00.x Version? [00]
Нажать Enter
Linux offers many choices for FORTRAN compilers, including the GNU compiler suite's free compiler 'gfortran', usually included in any Linux distribution. If gfortran is not installed, it can be installed from your distribution media. To check on installed GNU compilers, for RedHat/SUSE style Linux, type 'rpm -aq | grep gcc' for both languages, and for Debian/Ubuntu style Linux, it takes two commands type 'dpkg -l | grep gcc' type 'dpkg -l | grep gfortran' There are also commercial compilers, namely Intel's 'ifort', and Portland Group's 'pgfortran', and Pathscale's 'pathf90'. The last two are not common, and aren't as well tested. type 'which gfortran' to look for GNU's gfortran (a good choice), type 'which ifort' to look for Intel's compiler (a good choice), type 'which pgfortran' to look for Portland Group's compiler, type 'which pathf90' to look for Pathscale's compiler. Please enter your choice of FORTRAN:
ifort
Use of 'ifort' requires additional information since library names, and compiler flags, are very version number specific. note: ifort's directory tree is typically /opt/intel/fc /opt/intel/fce /opt/intel/Compiler /opt/intel/composerxe (et cetera). Type 'which ifort' and note the version number in its pathname. In case of the newer 'composerxe' bundles, the version is not shown in the pathname, but can be obtained by 'ifort -V'. Enter only the main version number, such as 8, ... 11, 12, 13, 14. Version?
15
hit <return> to continue to the math library setup.
Нажать Enter
Linux distributions do not include a standard math library. There are several reasonable add-on library choices, MKL from Intel for 32 or 64 bit Linux (very fast) ACML from AMD for 32 or 64 bit Linux (free) ATLAS from www.rpmfind.net for 32 or 64 bit Linux (free) and one very unreasonable option, namely 'none', which will use some slow FORTRAN routines supplied with GAMESS. Choosing 'none' will run MP2 jobs 2x slower, or CCSD(T) jobs 5x slower. Some typical places (but not the only ones) to find math libraries are Type 'ls /opt/intel/mkl' to look for MKL Type 'ls /opt/intel/Compiler/mkl' to look for MKL Type 'ls /opt/intel/composerxe/mkl' to look for MKL Type 'ls -d /opt/acml*' to look for ACML Type 'ls -d /usr/local/acml*' to look for ACML Type 'ls /usr/lib64/atlas' to look for Atlas Enter your choice of 'mkl' or 'atlas' or 'acml' or 'none':
mkl
The exact MKL libraries needed depend on its version number. First, where is your MKL software installed? For example /opt/intel/mkl -or- /opt/intel/Compiler/mkl -or- /opt/intel/composerxe/mkl -or- /shared/intel/composer_xe_2013/mkl -or- /your/sites/nonstandard/path/mkl Don't enter anything past the mkl subdirectory pathname. MKL pathname?
/opt/intel/composerxe/mkl
Second, it is possible to have multiple version of MKL installed, but often there is only one version installed. Your system seems to have the following version(s): benchmarks bin examples include interfaces lib tests tools a) If the above output contains one or more version number, enter the specific version you prefer, giving all decimals. b) If the above output contains paths like 'bin' and 'lib', enter the word 'skip' next. MKL version (or 'skip')?
skip
Math library 'mkl' will be taken from /opt/intel/composerxe/mkl/lib/intel64 please hit <return> to compile the GAMESS source code activator
Нажать Enter
ifort -o /mnt/storage/home/login/gamess/tools/actvte.x actvte.f unset echo Source code activator was successfully compiled. please hit <return> to set up your network for Linux clusters.
Нажать Enter
If you have a slow network, like Gigabit Ethernet (GE), or if you have so few nodes you won't run extensively in parallel, or if you have no MPI library installed, or if you want a fail-safe compile/link and easy execution, choose 'sockets' to use good old reliable standard TCP/IP networking. If you have an expensive but fast network like Infiniband (IB), and if you have an MPI library correctly installed, choose 'mpi'. communication library ('sockets' or 'mpi')?
mpi
The MPI libraries which work well on linux64/Infiniband are Intel's MPI (impi) MVAPICH2 SGI's mpt from ProPack, on Altix/ICE systems Other libraries may work, please see 'readme.ddi' for info. The choices listed above will compile and link easily, and are known to run correctly and efficiently. Enter 'sockets' if you just changed your mind about trying MPI. Enter MPI library (impi, mvapich2, mpt, sockets):
impi
MPI can be installed in many places, so let's find impi. The person who installed your MPI can tell you where it really is. impi is probably located at a directory like /opt/intel/impi/3.2 /share/apps/intel/impi/4.0.1.007 /share/apps/intel/impi/4.0.2.003 /shared/intel/impi/4.1.0.024 include iMPI's version numbers in your reply. Please enter your impi's location:
/opt/intel/impi/5.0.1.035
64 bit Linux builds can attach a special LIBCCHEM code for fast MP2 and CCSD(T) runs. The LIBCCHEM code can utilize nVIDIA GPUs, through the CUDA libraries, if GPUs are available. Usage of LIBCCHEM requires installation of HDF5 I/O software as well. GAMESS+LIBCCHEM binaries are unable to run most of GAMESS computations, and are a bit harder to create due to the additional CUDA/HDF5 software. Therefore, the first time you run 'config', the best answer is 'no'! If you decide to try LIBCCHEM later, just run this 'config' again. Do you want to try LIBCCHEM? (yes/no):
no
Your configuration for GAMESS compilation is now in /mnt/storage/home/login/gamess/install.info Now, please follow the directions in /mnt/storage/home/login/gamess/machines/readme.unix
- В итоге скрипт создаёт файл '~/gamess/install.info', содержащий введённые ответы.
compddi
- Затем необходимо скомпилировать DDI (Distributed Data Interface). Описанию этого кроме '~/gamess/machines/readme.unix' посвящён файл '~/gamess/ddi/readme.ddi'.
- При компиляции используются значения, указанные ранее при выполнении 'config'.
- При необходимости можно скорректировать файл ~/gamess/ddi/compddi, увеличив максимальное количество процессорных ядер в сервере и максимальное количество серверов, которые будут использоваться. Но для начала имеющиеся значения можно оставить без изменения:
set MAXCPUS=32 set MAXNODES=1024
- Скомпилировать DDI (это займёт около минуты):
cd ~/gamess/ddi ./compddi
- При успешной компиляции последние строки будут содержать фразу 'DDI compilation ended successfully.'
compall
- Следующий шаг - компиляция самого GAMESS (продолжается около 15 минут):
cd ~/gamess ./compall
- В процессе выводится множество однотипных блоков такого вида:
======================== mpchbond ============================== Mon Feb 8 18:40:06 NOVT 2016 Copying source code, mpchbond.src does not require activation. ifort -c -i8 -O2 -ftz -auto -assume byterecl -vec-report0 -warn nousage -inline-level=0 mpchbond.f90 ifort: command line remark #10010: option '-vec-report0' is deprecated and will be removed in a future release. See '-help deprecated' unset echo Mon Feb 8 18:40:07 NOVT 2016 0.684u 0.044s 0:00.86 83.7% 0+0k 8+1120io 0pf+0w
- ifort сообщает, что используемая при компиляции опция '-vec-report0' устарела и будет удалена из следующих версий ifort. Как было видно на этапе выполнения 'config', предпологается использование ifort версий до 14 включительно, в то время как у нас версия 15. На корректность работы GAMESS это не повлияет, т.к. позже все тесты завершатся успешно.
lked
- Затем нужно слинковать ранее полученные объектные файлы и получить исполняемый файл GAMESS. В качестве параметра скрипту передаётся 'version number', который указывался на этапе 'config':
cd ~/gamess ./lked gamess 00
- В результате в директории ~/gamess появится исполняемый файл gamess.00.x
Проверка
- В составе дистрибутива идут 47 тестовых задач и набор скриптов, позволяющих проверить корректность работы полученного исполняемого файла. Запуск тестов производится скриптом 'runall', который в цикле запускает скрипт 'rungms'. Но оба скрипта надо предварительно отредактировать, т.к. они не являются универсальными и готовыми у использованию. Судя по всему, они написаны разработчиками GAMESS для собственных нужд, под конфигурацию своего кластера. Например, 'rungms' не использует ранее созданный install.info с используемой конфигурацией.
- Отредактировать скрипт 'rungms':
- Заменить
set TARGET=sockets set GMSPATH=/u1/mike/gamess
на
set TARGET=mpi set GMSPATH=~/gamess
- При желании для упрощения скрипта можно удалить блоки вида
if ($TARGET == XXX) then ... endif
для всех XXX, кроме 'mpi'.
- Внутри блока
if ($TARGET == mpi) then ... endif
- Обратить внимание, что скрипту должно передаваться 4 параметра:
set PPN=$4
- Обратить внимание, что в качестве реализации MPI уже указан impi:
set DDI_MPI_CHOICE=impi
- Отредактировать путь до Intel MPI (установку переменной DDI_MPI_ROOT):
if ($DDI_MPI_CHOICE == impi) then set DDI_MPI_ROOT=/opt/intel/impi/5.0.1.035/intel64 endif
- Закомментировать строки:
# setenv I_MPI_FABRICS dapl
# setenv LD_LIBRARY_PATH /shared/intel/composer_xe_2013.1.117/compiler/lib/intel64:$LD_LIBRARY_PATH
- Также для запуска тестов необходимо подготовить 2 директории:
- Для временных файлов большого размера, которые будут удалены после завершения тестов. По хорошему эта директория должна находиться в рабочей области на файловой системе scratch. Но для проведения тестов будем использовать директорию '~/tmp';
- Для файлов с результатами работы. Допустим, это будет директория '~/gamess.results'.
- Пути до этих директорий должны быть указаны в начале rungms в переменных SCR и USERSCR соответственно (указанные директории необходимо заранее создать):
set SCR=~/tmp set USERSCR=~/gamess.results
- Кроме того, необходимо найти в скрипте (недалеко от начала) приведённый ниже код и закомментировать изменение SCR:
if ($SCHED == PBS) then # our ISU clusters have different names for local working disk space. # if ($?TMPDIR) then # set SCR=$TMPDIR # else # set SCR=/scratch/$PBS_JOBID # endif echo "PBS has assigned the following compute nodes to this run:" uniq $PBS_NODEFILE endif
- Затем нужно модифицировать скрипт 'runall':
- Преобразовать строку
./rungms exam$NUM $VERNO 1 >& exam$NUM.log
в
./rungms exam$NUM $VERNO 1 1 >& exam$NUM.log
т.к. при использовании MPI 'rungms' должен получать 4 параметра.
- Добавить в начало скрипта
rm exam??.log
- После этого можно запустить тесты (время выполнения около 5 минут):
cd ~/gamess ./runall 00
- И проверить корректность полученных результатов, запустив следующий скрипт:
tests/standard/checktst
Должно быть выведено примерно такое:
Checking the results of your sample GAMESS calculations, the output files (exam??.log) will be taken from . All jobs terminated normally, now checking detailed numerical results exam01: Eerr=0.0e+00 Gerr=0.0e+00. Passed. ... exam46: B1err=0.0e+00 A1err=0.0e+00. Passed. exam47: Serr=0.0e+00 Perr=5.0e-10. Passed. All 47 test results are correct!
- Перед следующим проведением тестов необходимо удалить ранее созданные файлы, находящиеся в директориях $SRC и $USERSCR.
Использование
- Инструкции по использованию GAMESS смотрите в официальной документации от разработчиков.