HPC на облачных GPU: стек, сеть и диски

Задача страницы. Дать инженерный каркас для запуска GPU‑ускоренного HPC в облаке: какие типы задач мы покрываем, как собрать стек (CUDA/MPI/NCCL/UCX), какие требования к сети/дискам, как настроить очереди/чекпоинты, считать экономику и следить за метриками.

TL;DR

  • Типы задач: MD/био (GROMACS/NAMD/AMBER), молекулярный докинг (AutoDock‑GPU), CFD (OpenFOAM‑CUDA), материаловедение (LAMMPS), геномика (Parabricks), граф‑аналитика (cuGraph), линал (cuBLAS/cuSPARSE), Монте‑Карло.
  • Стек: контейнеры с CUDA + MPI (+ UCX/NCCL) → оркестрация очередей (Slurm/K8S) → мониторинг GPU/сеть/диск.
  • Сеть: для межузлового масштаба важен низкий RTT и RDMA; внутри узла — NVLink/NVSwitch.
  • Диски: вход/выход и чекпоинты — на локальный NVMe‑scratch, «тёплое» хранилище как источник/сток.
  • Режимы: длинные расчёты — On‑Demand; массовые скрининги/реплики — Interruptible с чекпоинтами и чанк‑целями ≤ 120 с.
  • Профили GPU: 24 ГБ (Compact) — обучение/скрининг малого объёма; 48 ГБ (Balanced) — основной профиль; 80 ГБ (HQ) — крупные сетки/8K чекпоинты/много частиц.

Сценарии

  • MD/биофизика: наносекунды/день, реплики температур/λ‑окон, строгие чекпоинты. GROMACSNAMD
  • CFD/мех. жидкости: крупные сетки, многоузловой обмен граничными ячейками. OpenFOAM‑GPU
  • Материаловедение/атомистика: LAMMPS с GPU‑пакетами, межузловой MPI. LAMMPS
  • Докинг/скрининг: высокопараллельный оффлайн‑HTS; выгоден Interruptible. AutoDock‑GPU
  • Геномика: ускоренные пайплайны выравнивания/вариант‑коллинга, высокая I/O‑нагрузка. Parabricks
  • Граф‑аналитика: PageRank/поиск сообществ на cuGraph, чувствительна к памяти. cuGraph
  • Линал/оптимизация/Монте‑Карло: эталонные ядра cuBLAS/cuSPARSE, смешанный и FP64. ЛиналМонте‑Карло

Архитектуры/пайплайны

A. Одноузловой multi‑GPU (NVLink)

[Warm Storage] - [Prefetch - NVMe scratch] - [Container: App + MPI/NCCL]
                                      |
                             [GPU0]-[NVLink]-[GPU1]-...-[Checkpoints]

B. Многоузловой MPI + RDMA

[Warm Storage] - [Stager] - [NVMe scratch per node]
      |
      +----- [Node #1: GPUxN] ---- [MPI + UCX + NCCL]
      |
      +----- [Node #M: GPUxN] ---- [Job Scheduler / Slurm]

Ключи: RDMA/низкий RTT, UCX‑стек, один процесс на GPU (часто), NUMA‑пиннинг.

C. HTS/скрининг (массовый оффлайн)

[Input Library (ligands/genomes)] - [Sharder] - [Job Queue]
       |
       +---- [GPU Worker #1: chunk ≤ 120 s, retries]
       +---- [GPU Worker #N: idempotent tasks]
       |
       [Partial Results - Warm] → [Reducer - Final]

Конфиги и скелеты

Slurm: многоузловой запуск MPI+CUDA

#!/bin/bash
#SBATCH -J cfd_case
#SBATCH -N 2
#SBATCH --gpus-per-node=4
#SBATCH -t 04:00:00

export NCCL_DEBUG=INFO
export UCX_TLS=rc,ud,sm,self,gdr
srun --mpi=pmix_v3 \
  ./app_mpi_gpu --case /nvme/case --iters 20000 --checkpoint /nvme/ckpt

Чекпоинт‑таймер (rolling checkpoint, каждые ~120 с)

while true; do
  ./app_step --steps 500 --resume "$CKPT_DIR/last.ckpt" --write "$CKPT_DIR/last.ckpt"
  [ $? -ne 0 ] && echo "requeue" && exit 42
done

Наблюдаемость/метрики/алерты

Сквозные HPC‑метрики:

  • Производительность: steps_per_s, ns_per_day (MD), cells_per_s (CFD), edges_per_s (граф).
  • GPU: gpu_utilization, gpu_memory_used_bytes, sm_occupancy, gpu_power_watts.
  • Сеть: rdma_rx_mb_s, rdma_tx_mb_s, mpi_wait_ratio, allreduce_time_ms.
  • Диск/I/O: io_read_mb_s, io_write_mb_s, checkpoint_write_seconds.

Алерты: падение steps_per_s, mpi_wait_ratio > порога, checkpoint_write_seconds превышает интервал, gpu_memory_used_bytes → потолок VRAM.

Экономика и формулы

Cost_total = ((c_gpu × N_nodes × gpus_per_node) × t_run / 3600) / U × r + Cost_storage
ns_per_day = steps_per_s × dt × 86400
Cost_per_ns = Cost_total / ns_total
Cost_per_1K_ligands = ((c_gpu × t_1K / 3600) / U) × r

Чек‑лист перед продом

  • Устойчивость: включён чекпоинт‑рестарт и авто‑requeue. Детали
  • Единый контейнер (CUDA/MPI/библы), версии зафиксированы; smoke‑бенч OK.
  • Выбран профиль сети (RDMA/ethernet), проверены интерфейсы/MTU/пиннинг.
  • NVMe‑scratch подключён; префетч данных настроен; I/O не бутылочное горлышко.
  • Чекпоинты включены; интервал ≤ 120 с для Interruptible; recovery сценарий проверен.
  • Экономика посчитана: Cost_total, Cost_per_ns/Cost_per_million_cells/Cost_per_1K_ligands.

Навигация по разделу «HPC»

GROMACSLAMMPSNAMD/AMBERCFD (OpenFOAM‑CUDA)AutoDock‑GPUClara ParabricksМонте‑КарлоcuGraphЛинейная алгебраЧекпоинт‑рестарт

Сквозные: Multi‑GPUХранилищеКонтейнеры и CI/CDМониторингПроизводительностьInterruptible‑паттерны

Готовы запустить?

Запустить GPU-сервер