Запустите моделирование молекулярной динамики Gromacs с помощью численных расчетов жидкости' Слерм-GCP

1. Введение

Последнее обновление: 25.04.2022

Что вы построите

В этом практическом задании вы развернете кластер высокопроизводительных вычислений (HPC) с автоматическим масштабированием в Google Cloud. Для создания этого кластера с установленным через Spack пакетом Gromacs используется Terraform. Управление кластером будет осуществляться с помощью планировщика заданий Slurm. После создания кластера вы запустите тесты benchMEM, benchPEP или benchRIB .

Что вы узнаете

  • Как развернуть высокопроизводительный вычислительный кластер с поддержкой планировщика заданий Slurm.
  • Как запустить ускоренные графическим процессором симуляции молекулярной динамики с помощью Gromacs в Google Cloud, используя пакетное задание Slurm.

Что вам понадобится

2. Настройка

Для выполнения этого практического задания вам необходимо включить API Compute Engine и Cloud Build. Чтобы включить API Compute Engine и Cloud Build, откройте Cloud Shell и выполните следующие команды. Не забудьте заменить идентификатор вашего проекта на... ниже.

gcloud config set project <PROJECT_ID>
gcloud services enable compute.googleapis.com
gcloud services enable cloudbuild.googleapis.com

Внимание: Если вы планируете использовать сторонний SSH (например, OpenSSH) для подключения к кластеру, обязательно добавьте SSH-ключ в свой профиль облачной идентификации с помощью входа в ОС. Подробнее о добавлении SSH-ключей в профиль облачной идентификации можно узнать здесь .

3. [НЕОБЯЗАТЕЛЬНО] Создайте образ виртуальной машины GCP с помощью Gromacs

Для этого практического занятия мы предоставили вам предварительно собранный образ, поскольку процесс сборки Gromacs и всех его зависимостей может занять до 2 часов. Если вы хотите использовать этот предварительно собранный образ, чтобы сэкономить время, можете перейти к следующему разделу.

При запуске исследовательских приложений в Google Cloud существует множество вариантов установки и развертывания приложения. В этом разделе практического занятия вы создадите образ виртуальной машины, основанный на образе slurm-gcp (CentOS7). В процессе создания будут установлены компилятор, все зависимости Gromacs и сам Gromacs.

Конвейер сборки Gromacs Cloud Build в репозитории RCC Apps содержит необходимые инструкции для установки Gromacs. В процессе установки используется Packer для развертывания виртуальной машины, которая устанавливает Spack , который, в свою очередь, устанавливает компилятор GCC@9.2.0 и Gromacs@2021.2 с включенным ускорением GPU.

  1. Откройте Cloud Shell в GCP.
  2. Клонируйте репозиторий FluidNumerics/rcc-apps
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. Создайте образ с помощью Google Cloud Build.
cd rcc-apps
gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async

Вы можете проверить статус процесса сборки на панели управления Google Cloud Build.

Процесс сборки может занять до двух часов. Для его ускорения можно изменить схему файла конфигурации сборки , указав тип машины, чтобы повысить производительность сборки. Это можно сделать с помощью переменной сборки _MACHINE_TYPE. Например:

gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async --substitutions=_MACHINE_TYPE=n2-standard-64

После завершения сборки в вашем проекте Google Cloud появится образ виртуальной машины, который вы сможете использовать для развертывания кластера.

4. Разверните кластер высокопроизводительных вычислений с автоматическим масштабированием с помощью Terraform.

В этом разделе вы будете использовать Terraform для развертывания кластера высокопроизводительных вычислений с автоматическим масштабированием и установленным планировщиком заданий Slurm. Этот кластер будет развернут с вычислительными узлами, каждый из которых имеет 8 виртуальных процессоров и 1 графический процессор Nvidia® Tesla V100.

  1. Откройте Cloud Shell в GCP.
  2. Клонируйте репозиторий FluidNumerics/rcc-apps
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. Перейдите в каталог gromacs terraform:
cd ~/rcc-apps/gromacs/tf/slurm
  1. Создайте и проверьте план Terraform. Установите переменные среды GMX_NAME , GMX_PROJECT и GMX_ZONE чтобы указать имя вашего кластера, ваш проект GCP и зону, в которую вы хотите выполнить развертывание. Если у вас возникли вопросы, ознакомьтесь с примечанием ниже.
export GMX_PROJECT=<PROJECT_ID>
export GMX_ZONE=<ZONE>
export GMX_NAME="gromacs"
  1. Если вы создали собственный образ виртуальной машины в предыдущем разделе этого практического задания, вам также потребуется установить переменную среды GMX_IMAGE.

export GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss-latest"

  1. Создайте план с помощью команды `make`, которая выполнит terraform init && terraform plan .
make plan
  1. Разверните кластер. Процесс настройки занимает всего несколько минут, поскольку Gromacs и его зависимости уже предустановлены в вашем кластере.
make apply
  1. Подключитесь по SSH к узлу авторизации , созданному на предыдущем шаге. Вы можете увидеть этот узел на предыдущем шаге (вероятно, он называется gromacs-login0 ) . Это можно сделать, нажав кнопку SSH рядом со списком экземпляров виртуальных машин в меню консоли: Compute Engine -> Экземпляр виртуальной машины.

Дополнительная опция: Эта пара команд gcloud определит имя узла для входа и подключится к нему по SSH:

export CLUSTER_LOGIN_NODE=$(gcloud compute instances list --zones ${GMX_ZONE} --filter="name ~ .*login" --format="value(name)" | head -n1)
gcloud compute ssh ${CLUSTER_LOGIN_NODE} --zone ${GMX_ZONE}
  1. После подключения к узлу авторизации, чтобы проверить настройку кластера, убедитесь, что Gromacs установлен.
$ spack find gromacs
==> In environment /apps/spack-pkg-env
==> Root specs
gromacs@2021.2 +cuda~mpi

==> 1 installed package
-- linux-centos7-x86_64 / gcc@9.2.0 -----------------------------
gromacs@2021.2
  1. Убедитесь, что /opt/share/gromacs содержит перечисленные ниже данные.
$ ls /opt/share/gromacs/
benchMEM.tpr benchPEP-h.tpr benchPEP.tpr benchRIB.tpr

5. Запустите тест производительности benchRIB.

Gromacs — это исследовательское программное обеспечение, используемое для моделирования молекулярной динамики и расчета молекулярных структур с учетом ограничений минимизации энергии. Представленные в образе виртуальной машины задачи для этой лабораторной работы сосредоточены на молекулярной динамике, то есть на эволюции систем атомов.

В молекулярной динамике положения, скорости и ускорения атомов моделируются с использованием законов движения Ньютона:

638fa1fba54c3874.png

где, вектор положения — это положение атома i , t — время, 72a717ea69626d54.png — это масса атома i, и b5e52e17becb80ec.png — это сила, возникающая в результате взаимодействия атома i с атомом j , и 538199b3881cd305.png Силы обусловлены взаимодействиями между атомами. Зная температуру, давление, положения и скорости атомов, рассчитываются эти силы, и система численно интегрируется для получения новых скоростей и положений атомов. Этот процесс повторяется для моделирования молекулярной динамики в течение заданного периода времени.

Образ Gromacs (созданный вами или предоставленный вами) содержит три бенчмарка.

  1. benchMEM
  2. benchRIB
  3. benchPEP

Эти тестовые примеры взяты из набора бесплатных тестов Gromacs, созданных доктором Кутцнером, и представляют собой стандартный набор симуляций молекулярной динамики в переходных процессах. Каждый тест отличается количеством атомов и продолжительностью симуляции. Соответствующие конфигурации для каждой симуляции приведены в таблице ниже.

Метрика / Эталон

benchMEM

benchRIB

benchPEP

Количество атомов

81,743

2 136 412

12,495,503

Размер системы / нм

10,8 x 10,2 x 9,6

31,2 x 31,2 x 31,2

50.0 x 50.0 x 50.0

Шаг по времени / fs

2

4

2

Радиусы отсечки / нм

1

1

1.2

Шаг сетки PME / нм

0,12

0,135

0,16

Для запуска теста производительности вам потребуется отправить пакетное задание Slurm. По умолчанию предоставленный пакетный скрипт запускает тест производительности benchRIB. Входные файлы, определяющие конфигурации для предоставленных тестов, включены в образ виртуальной машины Gromacs в каталоге /opt/share/gromacs . Кроме того, пример bash-скрипта для запуска Gromacs доступен в каталоге /opt/share .

Для выполнения этого раздела необходимо подключиться по SSH к узлу входа в кластер.

  1. Отправьте пакетное задание, используя команду sbatch.
$ sbatch --ntasks=1 --cpus-per-task=8 --gres=gpu:1 --out=gromacs.out /opt/share/gromacs_bench.sh

Это поставит задание в очередь на выполнение, и Slurm выделит вам вычислительный узел. При запуске sinfo вы увидите, что вычислительный узел находится в состоянии alloc# , что означает, что вычислительный узел выделен для вашего задания, но находится в процессе выделения. После запуска задания узел будет переведен в состояние alloc .

$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
gromacs*     up   infinite      1 alloc# gromacs-compute-0-0
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 2   gromacs gromacs_      joe  R       0:02      1 gromacs-compute-0-0
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
gromacs*     up   infinite      1  alloc gromacs-compute-0-0

Дождитесь завершения задания. Стандартный бенчмарк (benchRIB) моделирует около 8 миллионов атомов и настроен на выполнение 5000 временных шагов (с 4 временными шагами/секундой), что занимает около 6 минут. Вы можете отслеживать статус задания с помощью этой команды:

watch squeue

Когда ваше задание будет удалено из очереди, вы можете выйти, нажав Ctrl+C.

  1. После завершения работы вы должны увидеть каталог run/ содержащий результаты моделирования (в run/MEM ) и лог-файл в текущем каталоге под названием gromacs.out . Каталог run/MEM содержит два файла: ener.edr и md.log . Файл ener.edr хранит энергии системы, температуру, давление, размер ячейки, плотность и вириалы в переносимом бинарном формате. Как следует из расширения файла, файл md.log содержит логи моделирования Gromacs и включает информацию о производительности моделирования, а также информацию из решателей PME и PME. Содержимое gromacs.out содержит стандартный вывод команды gmx mdrun и должно выглядеть примерно так, как показано ниже.
$ tail -n9 gromacs.out
step 5000, remaining wall clock time:     0 s
               Core t (s)   Wall t (s)        (%)
       Time:     3085.342      385.683      800.0
                 (ns/day)    (hour/ns)
Performance:        4.481        5.356

GROMACS reminds you: "I never thought of stopping, and I just hated sleeping. I can't imagine having a better life." (Barbara McClintock)

OK

6. Поздравляем!

В этом практическом задании вы создали масштабируемый облачный высокопроизводительный вычислительный кластер и запустили моделирование молекулярной динамики с ускорением на графическом процессоре с помощью Gromacs в Google Cloud!

Уборка

Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этом практическом задании:

РЕКОМЕНДУЕТСЯ: Удалить кластер высокопроизводительных вычислений с помощью Terraform.

  1. Откройте CloudShell и перейдите в каталог примеров gromacs/tf/slurm
cd ~/rcc-apps/gromacs/tf/slurm
  1. Выполните команду make destroy, чтобы удалить все ресурсы.
make destroy

ИЛИ : Удалить проект (наиболее эффективный и разрушительный вариант).

Самый простой способ избежать выставления счетов — удалить проект, созданный вами для практического занятия.

Внимание : удаление проекта влечет за собой следующие последствия:

  • Все данные в проекте удаляются. Если вы использовали существующий проект для этой практической работы, то при его удалении вы также удалите всю остальную работу, выполненную в этом проекте.
  • Пользовательские идентификаторы проектов теряются. При создании этого проекта вы могли создать пользовательский идентификатор проекта, который хотите использовать в будущем. Чтобы сохранить URL-адреса, использующие этот идентификатор проекта, например, URL-адрес appspot.com , удалите выбранные ресурсы внутри проекта, а не удаляйте весь проект.

Если вы планируете изучать несколько практических заданий и быстрых стартов, повторное использование проектов поможет вам избежать превышения лимитов квот на проекты.

  1. В консоли Cloud перейдите на страницу « Управление ресурсами ».
  2. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить». c01e35138ac49503.png .
  3. В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить» , чтобы удалить проект.