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
      1. Обратить внимание, что скрипту должно передаваться 4 параметра:
        set PPN=$4
      2. Обратить внимание, что в качестве реализации MPI уже указан impi:
        set DDI_MPI_CHOICE=impi
      3. Отредактировать путь до Intel MPI (установку переменной DDI_MPI_ROOT):
           if ($DDI_MPI_CHOICE == impi) then
               set DDI_MPI_ROOT=/opt/intel/impi/5.0.1.035/intel64
           endif
      4. Закомментировать строки:
        #   setenv I_MPI_FABRICS dapl
        #   setenv LD_LIBRARY_PATH /shared/intel/composer_xe_2013.1.117/compiler/lib/intel64:$LD_LIBRARY_PATH
    • Также для запуска тестов необходимо подготовить 2 директории:
      1. Для временных файлов большого размера, которые будут удалены после завершения тестов. По хорошему эта директория должна находиться в рабочей области на файловой системе scratch. Но для проведения тестов будем использовать директорию '~/tmp';
      2. Для файлов с результатами работы. Допустим, это будет директория '~/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 смотрите в официальной документации от разработчиков.