LAMMPS на GPU: межузловое масштабирование
Задача страницы. Дать практический рецепт запуска и масштабирования LAMMPS на облачных GPU: выбор GPU‑пакета (KOKKOS/GPU), одноузловые/многоузловые режимы с CUDA‑aware MPI (UCX/RDMA), настройки ввода, чекпоинты и устойчивость на Interruptible, наблюдаемость и экономика. Страница — входная точка ветки LAMMPS.
TL;DR
- GPU‑ускорение: рекомендуем KOKKOS с CUDA (-k on g N -sf kk) — современный путь, минимум копий CPU↔GPU. Альтернатива — пакет GPU (-sf gpu, package gpu ...).
- **Масштабирование: — Внутри узла: 1 MPI‑rank на 1 GPU, OpenMP‑потоки под CPU, NVLink снижает накладные. — Межузловое: CUDA‑aware MPI + UCX/RDMA; NCCL обычно не требуется — обмены идут через MPI. См. https://cloudcompute.ru/solutions/multi-gpu/
- I/O и кэш: вход/чекпоинты на NVMe‑scratch, «тёплое» — источники/результаты, «холодное» — архив. См. https://cloudcompute.ru/solutions/storage-data/
- Режимы: tightly‑coupled проды — On‑Demand; параметрические свипы/много независимых задач — Interruptible, чанк ≤ 120 с + restart. См. https://cloudcompute.ru/solutions/interruptible-patterns/ и https://cloudcompute.ru/solutions/hpc/checkpoint-restart/
- Профили GPU: 24 ГБ (Compact) — мелкие системы/батчи; 48 ГБ (Balanced) — основной профиль; 80 ГБ (HQ) — крупные домены/много узлов; для множества мелких — MIG. См. https://cloudcompute.ru/solutions/mig/
- Метрики: steps_per_s, atoms_per_s, gpu_utilization, comm_time_ms, neighbor_build_ms, mpi_wait_ratio, io_read/write_mb_s, p50/p95 step_time. См. https://cloudcompute.ru/solutions/monitoring-logging/
- Экономика: Cost_per_step = (c_gpu * N_nodes * gpus_per_node / U) * (t_step / 3600); для кампаний — Cost_per_1M_steps, Cost_per_case. См. https://cloudcompute.ru/solutions/cost-planner/
Сценарии: когда и как масштабировать
- Одноузловой multi‑GPU. Быстрый старт, хорошая эффективность при 2–8 GPU и NVLink/NVSwitch. 1 rank/GPU, OpenMP для соседних задач (сбор соседей/парные взаимодействия).
- Межузловой MPI. Большие домены/высокий масштаб. Требует RDMA и аккуратной декомпозиции (processors, fix balance).
- Энсембли/параметрические свипы. Множество независимых коротких задач (температуры, потенциалы, геометрии) — идеально для Interruptible с restarts каждые ≤ 120 с.
- Гибридные пайплайны. Генерация структур/параметров (CV/ML), затем LAMMPS‑прогон, пост‑анализ и визуализация. См. https://cloudcompute.ru/solutions/hpc/ и https://cloudcompute.ru/solutions/performance-tuning/
Архитектуры/пайплайны A) Одноузловой GPU‑resident (KOKKOS)
[Warm Storage] -> [Prefetch -> NVMe scratch] -> [lmp -k on g:G -sf kk -in in.lmp]
| |
[topologies/data] [restart/dump -> warm/cold]
Ключи: 1 rank/GPU, suffix kk в input, OpenMP‑потоки на CPU, фиксированные версии контейнера. См. https://cloudcompute.ru/solutions/containers-ci-cd/
B) Межузловой MPI + RDMA
[Warm Storage] -> [Stager] -> [NVMe scratch per node]
|
+-----------------------------+------------------------------+
| (UCX/RDMA fabric) |
[Node#1: GPUxN] <========== Interconnect ===========> [Node#M: GPUxN]
| |
srun/mpirun (1 rank/GPU, CUDA-aware MPI, UCX) domain decomposition
------------------> [Slurm/K8S Queue] <----------------/
Ключи: низкий RTT, bind ранков к NUMA, processors/fix balance для равномерной нагрузки.
C) Энсембли/свипы (Interruptible)
[Param Grid] -> [Sharder] -> [Job Queue (chunk ≤120 s, retries)] -> [GPU Workers] -> [Reducer/QA] -> [Publish]
Ключи: идемпотентность, короткие restarts, сведение результатов после падов.
Профили GPU/VRAM/ориентиры
| **Профиль** | **VRAM** | **Типовые кейсы LAMMPS** | **Режим** | **Отн. throughput (≈)** | **Примечания** |
| **24 ГБ (Compact)** | 24 ГБ | Малые домены, короткие свипы, 1–2 GPU | On‑Demand / Interruptible | 1.0 | Хорош для массовых независимых задач |
| **48 ГБ (Balanced)** | 48 ГБ | Средние домены, 2–4 GPU/узел, KOKKOS | Оба | 1.5–1.8 | Базовый профиль кластера |
| **80 ГБ (HQ)** | 80 ГБ | Крупные домены, 4–8 GPU/узел, multi‑node | Оба | 2.2–2.6 | MIG для мелких свипов; требователен к сети |
Оценки относительны: итог зависит от потенциала, cutoffs, плотности системы и параметров соседства.
Конфиги и скелеты
1) Input LAMMPS (GPU‑friendly, KOKKOS)
# in.kokkos.lj — упрощённый пример
units lj
atom_style atomic
boundary p p p
region box block 0 50 0 50 0 50
create_box 1 box
lattice fcc 0.8442
create_atoms 1 box
mass 1 1.0
velocity all create 1.44 87287 loop geom
# Включаем KOKKOS и /kk суффиксы
package kokkos neigh half newton on
suffix kk
pair_style lj/cut 2.5
pair_coeff 1 1 1.0 1.0 2.5
neighbor 1.0 bin
neigh_modify delay 10 every 5 check yes
timestep 0.005
thermo 100
# Балансировка и декомпозиция
comm_modify mode single
fix lb all balance 100 1.1 shift xyz 20 1.1
# Чекпоинты для Interruptible
restart 5000 out/restart.*.bin # ~каждые ~25 шагов при thermo=100 — подберите по времени <=120 c
dump d1 all custom 200 out/xyz.* id type x y z
fix 1 all nvt temp 1.0 1.0 0.5
run 200000
unfix 1
Для «настоящих» кейсов используйте свой потенциал (pair_style eam/cvff/reaxff/...) и согласованные cutoffs.
2) Запуск KOKKOS (1 узел, 4 GPU)
# Предпочтительно контейнер с зафиксированными версиями; OpenMP под KOKKOS
export OMP_NUM_THREADS=2
mpirun -np 4 --bind-to numa --map-by ppr:1:gpu
lmp -k on g 4 -sf kk -pk kokkos neigh half newton on
-in in.kokkos.lj -var OUT /nvme/out
3) Slurm (2 узла × 4 GPU, CUDA‑aware MPI + UCX/RDMA)
#!/bin/bash
#SBATCH -J lmp_kokkos_prod
#SBATCH -N 2
#SBATCH --gpus-per-node=4
#SBATCH -t 04:00:00
#SBATCH -p gpu
#SBATCH --exclusive
module load cuda mpi # если используется модульная система
# UCX/RDMA (адаптируйте под вашу сеть)
export UCX_TLS=rc,ud,sm,self,gdr,cuda_copy,cuda_ipc
export UCX_NET_DEVICES=mlx5_0:1
export OMP_NUM_THREADS=2
srun --mpi=pmix_v3
lmp -k on g 4 -sf kk -pk kokkos neigh half newton on
-in /nvme/in.kokkos.lj
4) GPU package (альтернатива KOKKOS)
# in.gpu — пример с пакетом GPU
units metal
# ...
package gpu 1 neigh yes
suffix gpu
pair_style eam/gpu
# ...
run 100000
Запуск: lmp -sf gpu -pk gpu 1 -in in.gpu
5) YAML‑спека задания (универсально)
job:
name: "lammps_kokkos_prod"
mode: "on-demand" # on-demand | interruptible
nodes: 2
gpus_per_node: 4
gpu_profile: "48GB-Balanced"
network: "rdma"
io:
prefetch: ["/warm/cases/lj/"]
scratch: "/nvme"
checkpoint: "/nvme/restart"
interval_seconds: 120
run:
entrypoint: "lmp"
args: ["-k","on","g","4","-sf","kk","-pk","kokkos","neigh","half","newton","on",
"-in","/nvme/in.kokkos.lj"]
mpi:
enable: true
ranks: 8
map_by: "ppr:1:gpu"
hooks:
on_start: ["python /scripts/prefetch.py"]
on_checkpoint: ["python /scripts/register_restart.py"]
on_failure: ["python /scripts/requeue.py --backoff"]
``` **Наблюдаемость/метрики/алерты**
Опорные хабы:[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/?utm_source=chatgpt.com) •[ https://cloudcompute.ru/solutions/llm-inference/observability/](https://cloudcompute.ru/solutions/llm-inference/observability/?utm_source=chatgpt.com)
**Ключевые:**
- Производительность: steps\_per\_s, atoms\_per\_s, гистограмма step\_time\_seconds (p50/p95).
- GPU: gpu\_utilization, gpu\_memory\_used\_bytes, sm\_occupancy, gpu\_power\_watts.
- Коммуникации: mpi\_wait\_ratio, comm\_time\_ms, allreduce\_time\_ms, rdma\_rx/tx\_mb\_s.
- Соседи/I‑O: neighbor\_build\_ms, io\_read\_mb\_s, io\_write\_mb\_s, restart\_write\_seconds.
- Очереди: job\_queue\_depth, jobs\_inflight, retry\_total.
**Алерты:**
- p95 step\_time\_seconds растёт > X% к эталону.
- mpi\_wait\_ratio высокий при низком gpu\_utilization → сетевое/распиновка ранков.
- restart\_write\_seconds > интервала → риск потери прогресса для **Interruptible**.
- gpu\_memory\_used\_bytes близко к потолку → снижать домен/skin/параллелизм или перейти на 80 ГБ.
- Троттлинг: аномалии gpu\_power\_watts/частот.
## **Экономика и формулы**
См.[ https://cloudcompute.ru/solutions/cost-planner/](https://cloudcompute.ru/solutions/cost-planner/?utm_source=chatgpt.com) и <https://cloudcompute.ru/solutions/throughput-vs-latency/>
**Базовые:**
Throughput\_steps = steps\_per\_s
Cost\_total = ((c\_gpu \* N\_nodes \* gpus\_per\_node) \* t\_run\_hours) / U \* r + Cost\_storage
Cost\_per\_1M\_steps = Cost\_total / (Throughput\_steps \* t\_run\_seconds / 1e6)
**Масштабирование:**
Speedup(N) = T1 / TN
Scale\_eff(N) = Speedup(N) / N
Выбирайте N, где Scale\_eff(N) остаётся приемлемым по бюджету, а рост mpi\_wait\_ratio не «съедает» GPU.
**Interruptible‑кампании (K задач):**
Cost\_per\_case = (c\_gpu \* t\_case / 3600) / U \* r
Total\_cost = Σ\_i Cost\_per\_case\_i
## **Практики производительности**
- **KOKKOS по умолчанию.** -k on g N -sf kk, package kokkos neigh half newton on, suffix kk.
- **Декомпозиция/баланс.** processors для формы домена, fix balance для динамического выравнивания.
- **Соседи.** Настройте neighbor/neigh\_modify delay every — уменьшите частоту перестройки.
- **Pinned memory и GDR.** CUDA‑aware MPI + UCX с GDR; минимизируйте копии CPU↔GPU.
- **NVMe‑scratch.** Предзагрузка данных и запись restarts локально; write‑behind в «тёплое».
- **1 rank/GPU.** Предсказуемая производительность и меньшие накладные; OpenMP‑потоки на CPU.
- **Stability.** Фиксируйте версии контейнера; smoke‑бенч перед масштабированием. См. <https://cloudcompute.ru/solutions/containers-ci-cd/>
**Безопасность/политики**
См.[ https://cloudcompute.ru/solutions/security/](https://cloudcompute.ru/solutions/security/?utm_source=chatgpt.com)
- **Секреты/ключи** — только из секрет‑хранилища; не писать в логи.
- **Данные проектов** — ролевой доступ, шифрование «на покое», egress по allow‑list.
- **Изоляция** — отдельные неймспейсы/учётки, сетевые ACL.
- **Ретеншн** — промежуточные restarts автоочисткой; итоговые результаты в «холодное».
- **Аудит** — кто запускал/публиковал, какие версии использованы.
**Траблшутинг (симптом → причина → решение)**
<table><tbody><tr><td>**Симптом**
</td><td>**Возможная причина**
</td><td>**Решение**
</td></tr><tr><td>Низкий gpu\_utilization, высокие comm\_time\_ms
</td><td>Неудачная декомпозиция/без RDMA
</td><td>Включить RDMA/UCX, задать processors, fix balance, 1 rank/GPU
</td></tr><tr><td>Рост neighbor\_build\_ms
</td><td>Частая перестройка списка соседей
</td><td>neigh\_modify delay N every M, подобрать skin
</td></tr><tr><td>Не растёт скорость на N узлах
</td><td>MPI‑барьеры, топология сети
</td><td>Проверить mpi\_wait\_ratio, выровнять NUMA, уменьшить N или увеличить работу/ранг
</td></tr><tr><td>OOM VRAM
</td><td>Слишком большой домен/буферы
</td><td>Снизить размер/skin, уменьшить параллелизм, перейти на 48–80 ГБ
</td></tr><tr><td>Пики restart\_write\_seconds
</td><td>Пишем на удалённое/медленное хранилище
</td><td>Писать restarts на NVMe, реже/rotation, write‑behind
</td></tr><tr><td>Разные результаты между нодами
</td><td>Разные версии/флаги сборки
</td><td>Единый контейнер, зафиксировать версии, smoke‑бенч
</td></tr><tr><td>«Пилит» производительность
</td><td>Холодный кэш или фоновый I/O
</td><td>Prefetch на NVMe, pinned memory, исключить конкурентов по диску
</td></tr></tbody></table>
## **Как запустить в cloudcompute.ru**
1. **Выберите шаблон**:[ https://cloudcompute.ru/solutions/templates/](https://cloudcompute.ru/solutions/templates/?utm_source=chatgpt.com)
- «LAMMPS KOKKOS (single/multi‑GPU)» — быстрый старт.
- «HPC MPI (Slurm/K8S)» — многоузловые задания с RDMA.
2. **Профиль GPU**: 24/48/80 ГБ по таблице; массивные домены — 80 ГБ (HQ); множество мелких — 80 ГБ + **MIG** (шардинг).
3. **Режим**: tightly‑coupled — **On‑Demand**; свипы/энсембли — **Interruptible** (чанк ≤ 120 с + restarts). См. <https://cloudcompute.ru/solutions/interruptible-patterns/> и <https://cloudcompute.ru/solutions/hpc/checkpoint-restart/>
4. **Сеть/диск**: RDMA‑пулы для межузлового обмена; NVMe‑scratch для restarts/I‑O. См.[ https://cloudcompute.ru/solutions/storage-data/](https://cloudcompute.ru/solutions/storage-data/?utm_source=chatgpt.com)
5. **Контейнеры/CI**: закрепите версии LAMMPS/CUDA/MPI; smoke‑бенч перед масштабированием. См. <https://cloudcompute.ru/solutions/containers-ci-cd/>
6. **Наблюдаемость/алерты**: дашборды GPU/сеть/диск + steps\_per\_s, atoms\_per\_s, p95 step\_time. См.[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/?utm_source=chatgpt.com)
**Чек‑лист перед продом**
- KOKKOS включён (-k on g N -sf kk) или пакет GPU; 1 rank/GPU, OMP потоки настроены.
- UCX/RDMA активен; NUMA‑пиннинг и processors/fix balance отлажены.
- NVMe‑scratch подключён; restarts укладываются в ≤ 120 с; recovery протестирован.
- Метрики steps\_per\_s, gpu\_utilization, mpi\_wait\_ratio, neighbor\_build\_ms, io\_\* и алерты p95 заведены.
- Экономика посчитана: Cost\_per\_1M\_steps, масштаб по узлам не завышает Cost\_per\_case.
- Политики безопасности/ретенции применены; логи без секретов.
- Smoke‑бенч подтверждает стабильность на 2+ узлах.
**Навигация**
- Хаб HPC: <https://cloudcompute.ru/solutions/hpc/>
- Родственные приложения:
- GROMACS: <https://cloudcompute.ru/solutions/hpc/gromacs/>
- NAMD/AMBER: <https://cloudcompute.ru/solutions/hpc/namd/>
- CFD на GPU (OpenFOAM‑CUDA): <https://cloudcompute.ru/solutions/hpc/openfoam-gpu/>
- AutoDock‑GPU: <https://cloudcompute.ru/solutions/hpc/autodock/>
- Parabricks (геномика): <https://cloudcompute.ru/solutions/hpc/parabricks/>
- Монте‑Карло: <https://cloudcompute.ru/solutions/hpc/monte-carlo/>
- Граф‑аналитика (cuGraph): <https://cloudcompute.ru/solutions/hpc/graph-analytics/>
- Линал: <https://cloudcompute.ru/solutions/hpc/linear-algebra/>
- Оптимизация: <https://cloudcompute.ru/solutions/hpc/optimization/>
- Чекпоинт‑рестарт: <https://cloudcompute.ru/solutions/hpc/checkpoint-restart/>
- Сквозные:
- Multi‑GPU/топологии:[ https://cloudcompute.ru/solutions/multi-gpu/](https://cloudcompute.ru/solutions/multi-gpu/?utm_source=chatgpt.com) • MIG: <https://cloudcompute.ru/solutions/mig/>
- Данные/хранилище:[ https://cloudcompute.ru/solutions/storage-data/](https://cloudcompute.ru/solutions/storage-data/?utm_source=chatgpt.com)
- Контейнеры/CI/CD: <https://cloudcompute.ru/solutions/containers-ci-cd/>
- Мониторинг/логи:[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/?utm_source=chatgpt.com)
- Наблюдаемость:[ https://cloudcompute.ru/solutions/llm-inference/observability/](https://cloudcompute.ru/solutions/llm-inference/observability/?utm_source=chatgpt.com)
- Производительность:[ https://cloudcompute.ru/solutions/performance-tuning/](https://cloudcompute.ru/solutions/performance-tuning/?utm_source=chatgpt.com) • <https://cloudcompute.ru/solutions/throughput-vs-latency/>
- Interruptible‑паттерны: <https://cloudcompute.ru/solutions/interruptible-patterns/>
Готовы запустить?
Запустить GPU-сервер