• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

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 и др.),

  • расширяемость: модульная архитектура позволяет добавлять пользовательские модели, источники, диагностические инструменты и физические процессы.

Рис. 1. Пример визуализации расчёта с использованием WarpX – дисперсионный спектр электромагнитных волн в намагниченной плазме.

Выполнение расчетов на суперкомпьютере

Для выполнения расчёта на суперкомпьютере необходимо подготовить скрипт-файл для очереди задач с запросом требуемых ресурсов (см. общую инструкцию по запуску задач на суперкомпьютере).
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 - номер задачи в очереди).

Дополнительная информация


 

Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.