WarpX
👉Вернуться к списку инструкций
— программный комплекс для численного моделирования плазмы методом частиц в ячейках (PIC). Он предназначен для исследования взаимодействия заряженных частиц и электромагнитных полей, включая лазерно-плазменное ускорение и пучково-плазменные процессы. WarpX поддерживает параллельные вычисления (MPI), ускорение на GPU (CUDA/HIP), трёхмерные расчёты и вывод данных в формате openPMD. Также доступен Python-интерфейс (pywarpx, PicMI) для удобной постановки задач.
Официальный сайт: https://warpx.readthedocs.io
Доступные версии на суперкомпьютере НИУ ВШЭ
module use /opt/el9/hse/modules # Добавляем пути для модулей ОС Rocky
module load WarpX/25.11 # WarX версии 25.11 с поддержкой GPU (CUDA), MPI, OpenPMD, Python
# Используйте очередь (partition) rocky и узлы c V100
Обновление версий производится по запросу пользователей.
Тестовые исходные данные и примеры расположены по адресу https://warpx.readthedocs.io/en/24.01/usage/examples.html.
Важно: запуск расчетов с использованием WarpX возможен только на вычислительных узлах с операционной системой Rocky Linux. При постановке задачи в очередь необходимо выбирать соответствующий раздел (partition) rocky.
Пользователи: Международная лаборатория суперкомпьютерного атомистического моделирования и многомасштабного анализа, Департамент прикладной математики, любые подразделения НИУ ВШЭ
Ключевые особенности
Отличительные черты-
разработан специально для высокопроизводительных вычислений (HPC) и эффективно масштабируется на суперкомпьютерах с использованием MPI и тысяч вычислительных ядер,
-
поддерживает ускорение на GPU (CUDA/HIP), что позволяет значительно увеличивать производительность при моделировании крупных трёхмерных задач,
-
основан на библиотеке AMReX и поддерживает адаптивное разбиение сетки (AMR), что обеспечивает высокую точность при разумных вычислительных затратах,
-
реализует метод частиц в ячейках (PIC) с возможностью моделирования как классических, так и релятивистских плазменных процессов,
-
поддерживает стандарт PicMI (через pywarpx) для удобной постановки задач в Python и формат openPMD для универсального хранения и анализа данных.
-
лазерно-плазменные взаимодействия: моделирование лазерного ускорения частиц (LWFA), взаимодействия интенсивного излучения с плазмой и плотными мишенями,
-
пучково-плазменные процессы: моделирование плазменных ускорителей (PWFA), динамики электронных и ионных пучков,
-
коллективные эффекты: учет пространственного заряда, плазменных волн, нелинейных и релятивистских эффектов,
-
трёхмерные расчёты: поддержка 1D, 2D, 3D и квазициллиндрической (RZ) геометрии,
-
масштабируемость: эффективная работа на гибридных архитектурах CPU+GPU,
-
диагностика и постобработка: вывод данных в формате openPMD с возможностью последующего анализа в Python (NumPy, SciPy, yt и др.),
-
расширяемость: модульная архитектура позволяет добавлять пользовательские модели, источники, диагностические инструменты и физические процессы.
Выполнение расчетов на суперкомпьютере
Для выполнения расчёта на суперкомпьютере необходимо подготовить скрипт-файл для очереди задач с запросом требуемых ресурсов (см. общую инструкцию по запуску задач на суперкомпьютере).
WarpX предоставляет гибкие возможности настройки расчёта и поддерживает масштабируемые параллельные вычисления (MPI) и ускорение на GPU. Для корректной подготовки входного файла и sbatch-скрипта полезно понимать базовые принципы параллельных вычислений (MPI-процессы, привязка процессов к GPU, распределение памяти и файловый ввод-вывод). Ниже приведены общие рекомендации, применимые для большинства расчётов с использованием WarpX.
Способы запуска
Глобально доступны два способа запуска:
1. Через исполняемый файл WarpX (классический запуск): выполняется исполняемый файл warpx.3d, входные данные задаются текстовым файлом параметров inputs.
2. Через Python-интерфейс (PicMI/pywarpx): запуск выполняется командой python your_case.py, параметры задаются в Python-скрипте через PicMI. При необходимости Python-скрипт может сгенерировать текстовый файл inputs (например, через sim.write_input_file(...)) для последующего запуска исполняемым файлом.
Таким образом, у WarpX есть два типа входных файлов:
1. Текстовый файл параметров inputs;
2. Python-скрипт PicMI/pywarpx, который формирует постановку задачи программно.
Рекомендации
WarpX может записывать слишком большие объёмы диагностической информации (поля, частицы, производные величины). При трёхмерных расчётах и большом числе шагов это способно быстро создать терабайты бесполезных данных и создать значительную нагрузку на файловую систему и мешать другим пользователям суперкомпьютера. Отключите запись диагностических данных, если Вы не планируете анализировать поля/частицы на каждом промежуточном этапе.
Например, в Python-примере вида:
# Add diagnostics
sim.add_diagnostic(particle_diag)
sim.add_diagnostic(field_diag)
обычно целесообразно отключить эти строки (или увеличить период записи), если вы не планируете анализировать поля/частицы на каждом сохранении. Для длительных прогонов рекомендуется:
- увеличивать period (писать реже),
- сокращать список сохраняемых полей/величин,
- отключать диагностику частиц, если она не нужна.
Пример запуска на GPU
В качестве примера, выполним моделирование для тестовых данных, расположенных на странице https://warpx.readthedocs.io/en/24.01/usage/examples/lwfa/README.html. Искусственно увеличим разрешение расчетной сетки: заменим участок
nx = 32
ny = 32
nz = 256
на следующий
nx = 256
ny = 256
nz = 2048
Сохраним файл с имем test_warpx.py. Для постановки задачи в очередь сформируем скрипт warpx.sbatch
#!/bin/bash #SBATCH --job-name=warpx_test # Название задачи
#SBATCH --partition=rocky # Название очереди #SBATCH --time=01:00:00 # Максимальное время выполнения #SBATCH --error=warpx-%j.err # Файл для вывода ошибок #SBATCH --output=warpx-%j.log # Файл для вывода результатов #SBATCH --constraint="type_a|type_b|type_c" # Предпочитаемый тип узла #SBATCH --nodes 1 # Число используемых узлов #SBATCH --ntasks 16 # Количество MPI процессов
#SBATCH --gpus 2 # Количество GPU #SBATCH --mail-user=ваша_почта # Укажите ваш email для отправки уведомлений #SBATCH --mail-type=END,FAIL # События, требующие уведомления
# Выгрузка всех модулей
module purge
# Добавление пути поиска модулей для Rocky Linux
module use /opt/el9/hse/modules # Загрузка модуля WarpX module load WarpX/25.11 # Команда запуска
mpirun -np ${SLURM_NTASKS} python test_warpx.py
# Рекомендуемые ресурсы на cHARISMa:
# - на узлах типа A: 16 ядер CPU и 1-2 GPU V100 32GB
# - использование более мощных GPU, чем V100 не рекомендуется
# - только вычислительные узлы переведенные на ОС Rocky Linux 9
Для постановки задачи в очередь необходимо выполнить команду sbatch warpx.sbatch. Посмотреть состояние своих задач можно с помощью команды mj. Результат выполнения скрипта будет сохранён в файл warpx-00000.log (где 00000 - номер задачи в очереди). Сообщения, выводимые в процессе работы Smilei, будут записаны в файл warpx-00000.err (где 00000 - номер задачи в очереди).
Дополнительная информация
- Документация WarpX
- Репозиторий WarpX на GitHub
- Руководство по запуску
- Инструкция по работе с системой мониторинга эффективности HPC TaskMaster
Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.
.png)