Gaussian 16

  • Цитаты из Википедии:
    • Gaussian (читается как гауссиан) - программный пакет для расчета структуры и свойств молекулярных систем в газофазном и конденсированном состоянии, включающая большое разнообразие методов вычислительной химии, квантовой химии, молекулярного моделирования.
    • Стандартные возможности:
      • Методы молекулярной механики: AMBER, UFF, DREIDING
      • Полуэмпирические методы: AM1, PM3, PM6, CNDO, INDO, MINDO/3, MNDO, ZINDO
      • Неэмпирические методы: RHF/UHF, MP2 (MPn), CC, CASSCF, CI, GVB, BD, OVGF
      • DFT и TD с использованием большего количества простых и гибридных локальных и градиентно-корректированных функционалов
      • Гибридные методы: ONIOM
      • Неэмпирическая молекулярная динамика: ADMP, BOMD
      • Расчетные методы точных значений термохимических величин и энергий: Gaussian-1, Gaussian-2, Gaussian-3, CBS, W1
  • :!: В соответствии с лицензионным соглашением доступ к Gaussian ограничен и предоставляется только конкретным сотрудникам и учащимся НГУ по индивидуальному запросу.
  • Имеющаяся версия Gaussian позволяет распараллеливать вычисления только в пределах одного физического сервера. Для распараллеливания на несколько серверов требуется дополнительное ПО 'Linda 9.x', которое не приобреталось.
  • Установлены две версии Gaussian 16, скомпилированные для процессоров, поддерживающих разные наборы дополнительных инструкций:
    1. В директории /opt/shared/gaussian/avx2 находится версия для узлов с более современными процессорами, поддерживающими инструкции AVX2. Она должна использоваться на серверах HPE поколений Gen9 и Gen10.
    2. В директории /opt/shared/gaussian/sse4_2 находится версия для узлов c более старыми процессорами, поддерживающими только инструкции SSE4.2. Она должна использоваться на серверах HP поколения G7.
  • Перед использованием Gaussian необходимо правильно настроить переменные окружения. Рекомендуется делать это непосредственно в скриптах для qsub:
    1. Переменная окружения g16root должна указывать на директорию с Gaussian:
      export g16root="/opt/shared/gaussian/avx2"

      или

      export g16root="/opt/shared/gaussian/sse4_2"
    2. Переменная окружения GAUSS_SCRDIR должна указывать на директорию для временных файлов. Рекомендуется использовать рабочие области для временных файлов, в качестве уникального имени при этом предлагается использовать номер задачи:
      export GAUSS_SCRDIR=$(ws_allocate $(echo $PBS_JOBID|awk -F\. '{print $1}') 30)
    3. Для настройки остальных переменных окружения выполнить:
      . $g16root/g16/bsd/g16.profile
  • Создать входной файл test.gjf следующего содержания (осторожно, пустые строки имеют значение):
    %nprocshared=4
    %mem=256mb
    # b3lyp/TZVP Opt Freq
    
    Triplet Dioxygen geometry optimization
    
    0 3
    O
    O 1 R
    
    R 1.220
  • Создать скрипт submit.sh. Запрашиваемые в нём ресурсы должны соответствовать указанным во входном файле: значения ncpus и nprocshared должны совпадать, запрашиваемое количество mem должно быть примерно на 60 МБ больше, чем во входном файле:
    #!/bin/bash
     
    #PBS -l walltime=0:1:0
    #PBS -l select=1:ncpus=4:mem=320M
    #PBS -j oe
     
    cd $PBS_O_WORKDIR
     
    uname -n
    if [ "$(cat /proc/cpuinfo|grep -c avx2)" != 0 ] ; then
        export g16root="/opt/shared/gaussian/avx2"
    elif [ "$(cat /proc/cpuinfo|grep -c sse4_2)" != 0 ] ; then
        export g16root="/opt/shared/gaussian/sse4_2"
    else
        echo 'ERROR: unsupported CPU'
        exit 100
    fi
    echo "g16root = $g16root"
     
    . $g16root/g16/bsd/g16.profile
     
    JOB=$(echo $PBS_JOBID|awk -F\. '{print $1}')
    echo "JOB = $JOB"
     
    export GAUSS_SCRDIR=$(ws_allocate $JOB 30)
    if [ "x$GAUSS_SCRDIR" == "x" ] || [ ! -d $GAUSS_SCRDIR ] ; then
        echo "ERROR: no workspace $GAUSS_SCRDIR"
        exit 101
    fi
    echo "GAUSS_SCRDIR = $GAUSS_SCRDIR"
     
    $g16root/g16/g16 < $PBS_O_WORKDIR/test.gjf >> $PBS_O_WORKDIR/test.$JOB.out
     
    ws_release $JOB
  • Поставить задачу в очередь:
    qsub submit.sh
  • Дождаться завершения задачи. В результате её работы должны появиться 3 файла:
  • Пользователями ИВЦ НГУ был разработан скрипт qgauss, позволяющий автоматизировать создание задачи на основе входного файла Gaussian и обеспечивающий соответствие запрашиваемых для задачи ресурсов указанным во входном файле.
  • Скрипт публикуется 'как есть', ИВЦ НГУ не занимается его улучшением или поддержкой.
  • Скрипт написан на языке Perl, при необходимости вы можете доработать его самостоятельно. Для лучшего понимания предлагается создать скрипт для qsub без постановки в очередь (с помощью параметра '-d', см. ниже) и изучить его.
  • Для получения краткой справки о возможных параметрах командной строки нужно выполнить скрипт qgauss с параметром '-h':
    hpcuser@clu:~/examples/gaussian> ./qgauss -h
    Usage:
        qgauss -h
        qgauss [-cder] [-q queue] [-w #] filename1.inp ...
    Options:
        -h -- show this help
        -c -- release workdir after running
        -d -- dry run - do not queue job file
        -e -- edit job file before queueing
        -r -- reuse common scratch directory (dangerous)
        -q queue_name - send job to specific queue
        -w hours -- set job walltime (defaults to 14 days)
  • По умолчанию:
    • В качестве имени задачи (#PBS -N …) используется имя входного файла Gaussian без расширения.
    • Для задачи запрашивается время работы, равное 14 дням. Данное значение можно переопределить с помощью конфигурационного файла '.qgaussrc', описанного ниже. Также для каждой конкретной задачи время работы можно указать с помощью параметра командной строки '-w', к которому добавляется значение walltime в часах (например, '-w 1').
    • Задача размещается в очереди по умолчанию. Используемую очередь можно переопределить с помощью параметра командной строки '-q'.
    • Созданный скрипт для qsub сразу ставится в очередь. Это можно отключить с помощью параметра командной строки '-d'.
    • В качестве имени рабочей области, используемой как GAUSS_SCRDIR, используется комбинация из имени и номера задачи (например, 'test_2266954'). Это гарантирует, что каждая задача будет использовать собственную директорию для временных файлов. Но иногда может быть удобно, чтобы рабочая область имела заранее предсказуемое имя. В таком случае можно с помощью параметра '-r' указать, что имя рабочей области должно совпадать с именем задачи (без добавления номера задачи). Данная возможность может привести к некорректной работе в случае одновремнного выполнения двух задач с одинаковыми именами, поэтому должна использоваться с осторожностью.
    • Рабочая область после завершения задачи не удаляется. Для автоматического удаления нужно добавить парамер '-c'.
  • Для настройки некоторых персональных предпочтений можно использовать файл .qgaussrc, который должен находиться в корне домашней директории пользователя. Файл должен состоять из строк вида 'параметр=значение'. Возможны следующие параметры:
    • mail - адрес электронной почты для отправки уведомлений PBS. Соответствующее значение будет подставлено в строку '#PBS -M …' сгенерированного скрипта. Используется в случае, когда пользователь хочет получать уведомления от PBS на адрес, отличный от указанного при регистрации.
    • mailopt - типы уведомлений, которые пользователь будет получать. Значение будет подставлено в строку '#PBS -m …'.
    • walltime - значение по умолчанию для времени выполнения задачи в часах.
    • scratchttl - значение по умолчанию для времени жизни создаваемых рабочих областей для временных файлов в днях.
  • Пример файла .qgaussrc:
    mailopt=n
    walltime=24
    scratchttl=3


ИВЦ НГУ благодарит сотрудников НГУ Дмитрия Евгеньевича Горбунова и Виталия Георгиевича Киселева за помощь в составлении данной инструкции.