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/биофизика: наносекунды/день, реплики температур/λ‑окон, строгие чекпоинты. GROMACS • NAMD
- 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»
GROMACS • LAMMPS • NAMD/AMBER • CFD (OpenFOAM‑CUDA) • AutoDock‑GPU • Clara Parabricks • Монте‑Карло • cuGraph • Линейная алгебра • Чекпоинт‑рестарт
Сквозные: Multi‑GPU • Хранилище • Контейнеры и CI/CD • Мониторинг • Производительность • Interruptible‑паттерны
Готовы запустить?
Запустить GPU-сервер