1. Введение
Последнее обновление: 25 апреля 2022 г.
Что вы построите
В этой лабораторной работе вы развернете кластер высокопроизводительных вычислений (HPC) с автоматическим масштабированием в Google Cloud. При развертывании Terraform создается этот кластер с Gromacs, установленным через Spack . Кластер будет управляться с помощью планировщика заданий Slurm. Когда кластер будет создан, вы запустите тесты BenchMEM, BenchPEP или BenchRIB .
Что вы узнаете
- Как развернуть кластер HPC с поддержкой планировщика заданий 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.
Для этой лаборатории кода мы предоставили вам предварительно созданный образ, поскольку процесс сборки может занять до 2 часов для установки Gromacs и всех его зависимостей. Если вы хотите использовать этот предварительно созданный образ, чтобы сэкономить время, вы можете перейти к следующему разделу.
При запуске исследовательских приложений в Google Cloud существует множество вариантов установки и развертывания вашего приложения. В этом разделе лаборатории кода вы создадите образ виртуальной машины, созданный на основе образа виртуальной машины slurm-gcp (CentOS7). В процессе создания будут установлены компилятор, все зависимости Gromacs и сам Gromacs.
Конвейер Gromacs Cloud Build в репозитории RCC Apps содержит необходимые инструкции по установке Gromacs. В процессе установки Packer используется для развертывания виртуальной машины, которая устанавливает Spack , который, в свою очередь, устанавливает компилятор GCC@9.2.0 и Gromacs@2021.2 с включенным ускорением графического процессора.
- Откройте Cloud Shell на GCP.
- Клонируйте репозиторий FluidNumerics/rcc-apps.
cd ~ git clone https://github.com/FluidNumerics/rcc-apps.git
- Создайте образ с помощью 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. Разверните автоматически масштабируемый кластер HPC с помощью Terraform.
В этом разделе вы будете использовать Terraform для развертывания кластера HPC с автоматическим масштабированием и установленным планировщиком заданий Slurm. Этот кластер будет развернут с вычислительными узлами, каждый из которых имеет 8 виртуальных ЦП и 1 графический процессор Nvidia® Tesla V100.
- Откройте Cloud Shell на GCP.
- Клонируйте репозиторий FluidNumerics/rcc-apps.
cd ~ git clone https://github.com/FluidNumerics/rcc-apps.git
- Перейдите в каталог gromacs terraform:
cd ~/rcc-apps/gromacs/tf/slurm
- Создайте и просмотрите план терраформирования. Задайте переменные среды
GMX_NAME
,GMX_PROJECT
иGMX_ZONE
, чтобы указать имя вашего кластера, вашего проекта GCP и зону, в которой вы хотите выполнить развертывание. Если вы не уверены, ознакомьтесь с примечанием ниже.
export GMX_PROJECT=<PROJECT_ID> export GMX_ZONE=<ZONE> export GMX_NAME="gromacs"
- Если вы создали собственный образ виртуальной машины в предыдущем разделе этой лаборатории кода, вам также потребуется установить переменную среды GMX_IMAGE.
экспорт GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss-latest"
- Создайте план с помощью команды make, которая запустит
terraform init && terraform plan
.
make plan
- Разверните кластер. Процесс установки занимает всего несколько минут, поскольку Gromacs и его зависимости предварительно установлены в вашем кластере.
make apply
- 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}
- После подключения к узлу входа в систему, чтобы проверить настройку кластера, убедитесь, что 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
- Убедитесь, что
/opt/share/gromacs
имеет содержимое, указанное ниже.
$ ls /opt/share/gromacs/ benchMEM.tpr benchPEP-h.tpr benchPEP.tpr benchRIB.tpr
5. Запустите тест RIB Benchmark.
Gromacs — это исследовательское программное обеспечение, которое используется для моделирования молекулярной динамики и расчета молекулярных структур в условиях минимизации энергии. Тесты, представленные в образе VM для этой лаборатории, сосредоточены на молекулярной динамике, эволюции систем атомов.
В молекулярной динамике положения, скорости и ускорения атомов моделируются с использованием законов движения Ньютона:
где, — положение атома i , t — время,
— масса атома i и
- несвязанная сила, действующая на атом i со стороны атома j , и
— силы, обусловленные связными взаимодействиями. Учитывая температуру, давление, положения атомов и скорости атомов, силы рассчитываются, и система численно интегрируется для получения новых скоростей и положений атомов. Этот процесс повторяется для моделирования молекулярной динамики в течение заданного периода времени.
Образ Gromacs (тот, который вы создали, или тот, который вы предоставили) содержит три теста.
- скамейкаМЭМ
- скамейкаРИБ
- скамейкаПЭП
Эти тесты взяты из набора бесплатных тестов Gromacs Benchmarks доктора Куцнера и представляют собой стандартный набор моделирования переходной молекулярной динамики. Каждый тест различается количеством атомов и продолжительностью моделирования. Соответствующие конфигурации для каждого моделирования приведены в таблице ниже.
Метрика/Бенчмарк | скамейкаМЭМ | скамейкаРИБ | скамейкаПЭП |
Количество атомов | 81 743 | 2 136 412 | 12 495 503 |
Размер системы / нм | 10,8 х 10,2 х 9,6 | 31,2 х 31,2 х 31,2 | 50,0 х 50,0 х 50,0 |
Шаг по времени / фс | 2 | 4 | 2 |
Радиусы среза / нм | 1 | 1 | 1.2 |
Шаг сетки PME / нм | 0,12 | 0,135 | 0,16 |
Чтобы запустить тест, вы отправите пакетное задание Slurm. По умолчанию предоставленный пакетный сценарий запускает тест BenchRIB. Входные колоды, определяющие конфигурации для предоставленных тестов, включены в образ виртуальной машины Gromacs в каталоге /opt/share/gromacs
. Кроме того, в /opt/share
доступен пример bash-скрипта для запуска Gromacs.
Для этого раздела вам необходимо подключиться по SSH к узлу входа в кластер.
- Отправьте пакетное задание с помощью команды 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 временными шагами/fs) и занимает около 6 минут. Вы можете отслеживать статус вашего задания с помощью этой команды:
watch squeue
Когда ваше задание исчезнет из очереди, вы можете выйти, нажав Ctrl-C.
- Когда задание завершится, вы должны увидеть каталог с именем
run/
, который содержит выходные данные моделирования (в разделеrun/MEM
) и файл журнала в вашем текущем каталоге с именемgromacs.out
. Каталогrun/MEM
содержит два файлаener.edr
иmd.log
. Файлener.edr
хранит энергию системы, температуру, давление, размер коробки, плотность и вириалы в портативном двоичном формате. Как следует из расширения, файлmd.log
содержит журналы моделирования Gromacs и включает информацию о производительности моделирования в дополнение к регистрации информации от решателей частиц-частиц и 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. Поздравления
В этой лабораторной работе вы создали автоматически масштабируемый облачный кластер HPC и выполнили моделирование молекулярной динамики с ускорением на графическом процессоре с помощью Gromacs в Google Cloud!
Уборка
Чтобы избежать взимания платы с вашей учетной записи Google Cloud за ресурсы, используемые в этой лаборатории кода:
РЕКОМЕНДУЕТСЯ: удалите кластер HPC с помощью Terraform.
- Откройте облачную оболочку и перейдите в каталог примеров
gromacs/tf/slurm
cd ~/rcc-apps/gromacs/tf/slurm
- Запустите make Destroy, чтобы удалить все ресурсы.
make destroy
ИЛИ , Удалить проект (самый эффективный и разрушительный вариант)
Самый простой способ избежать выставления счетов — удалить проект, созданный вами для лаборатории кода.
Внимание : Удаление проекта имеет следующие последствия:
- Все в проекте удалено. Если вы использовали существующий проект для этой лаборатории кода, то при его удалении вы также удаляете всю другую работу, выполненную в проекте.
- Пользовательские идентификаторы проектов теряются. Создавая этот проект, вы, возможно, создали собственный идентификатор проекта, который хотите использовать в будущем. Чтобы сохранить URL-адреса, использующие идентификатор проекта, например URL-адрес appspot.com , удалите выбранные ресурсы внутри проекта, а не удаляйте весь проект.
Если вы планируете изучить несколько лабораторий кода и кратких руководств, повторное использование проектов поможет вам избежать превышения ограничений квоты проекта.
- В Cloud Console перейдите на страницу «Управление ресурсами» . Перейдите на страницу «Управление ресурсами».
- В списке проектов выберите проект, который вы хотите удалить, и нажмите «Удалить».
.
- В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу» , чтобы удалить проект.