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

Smilei

👉Вернуться к списку инструкций

Smilei – программное обеспечение для проведения сложных численных исследований в области физики плазмы. Оно предоставляет интуитивно понятный интерфейс и широкие возможности для моделирования различных процессов в плазме, таких как взаимодействия между частицами, распространение светового излучения и формирование структуры плазмы. Smilei способен обрабатывать как одномерные, так и многомерные системы, что позволяет исследовать широкий спектр физических явлений от микроскопического до макроскопического уровня.
Официальный сайт: https://smileipic.github.io/Smilei/

Доступные версии на суперкомпьютере НИУ ВШЭ

 module load Smilei/5.1-cpu     # Smilei версии 5.1 для работы с CPU
 module load Smilei/5.1-gpu     # Smilei версии 5.1 для работы с GPU

Тестовые исходные данные и примеры расположены на суперкомпьютере в каталогах /opt/software/smilei/benchmarks и /opt/software/smilei/examples/

Пользователи: Международная лаборатория суперкомпьютерного атомистического моделирования и многомасштабного анализаДепартамент прикладной математики, любые подразделения НИУ ВШЭ

Ключевые особенности

Отличительные черты
  • разработан с учетом требований высокопроизводительных вычислений (HPC) и может эффективно работать на суперкомпьютерах, используя тысячи процессорных ядер,
  • код способен масштабироваться на большие системы, что позволяет моделировать очень большие и сложные плазменные системы,
  • поддерживает гибридные вычислительные архитектуры, включая CPU и GPU, что делает его гибким и эффективным для различных аппаратных конфигураций,
  • может использоваться для моделирования различных типов плазменных процессов, таких как лазерно-материальные взаимодействия, астрофизические плазмы, инерциальный термоядерный синтез и многие другие.
Возможности
  • лазерно-плазменные взаимодействия: моделирование магнитных элементов (диполей, квадруполей, секступолей и т.д.), стоячих и путешествующих волновых рф-камер, рассеяния на материалах и другими факторами,
  • коллективная динамика: включает учет коротковолновых и длинноволновых возмущений, когерентного синхротронного излучения, продольного и поперечного пространственного заряда, а также внутреннего и Тушековского рассеяния,
  • взаимодействие с другими программами: использование файлов SDDS (Self-Describing Data Sets) для обмена данными с другими программами, такими как ASTRA, IMPACT и TRACK,
  • анализ фазового пространства: вычисление параметров Твисса, моментов и других характеристик,
  • обработка данных: использование общего набора инструментов SDDS для постобработки и графического отображения данных, включая построение графиков, фильтрацию, сортировку, анализ частот и фиттинг.

Рис. 1. Пример визуализации расчёта с использованием Smilei – распределение электрического поля E1 в плазме в момент времени t = 833 fs

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

Для выполнения расчёта на суперкомпьютере необходимо подготовить скрипт-файл для очереди задач с запросом требуемых ресурсов (см. общую инструкцию по запуску задач на суперкомпьютере).
Smilei предоставляет широкие возможности для конфигурирования параметров запуска. Для составления качественного входного python-файла, а также соответствующего ему sbatch-скрипта, необходимо понимание основ параллельных вычислений. Основные термины и понятия, а также рекомендации по запуску описаны в инструкции. Здесь приведены некоторые общие рекомендации, которые применимы для большей части расчётов с использованием Smilei:

  • количество процессов (--ntasks) для Smilei всегда должно быть равно количеству GPU (--gpus),

  • в каждом направлении (x, y, z) количество участков (number_of_patches) должно быть степенью двойки
  • предпочтительнее использование небольших участков при симуляции небольшой области с большим количеством частиц (до 6х6х6 ячеек), в противном случае допускается использование крупных участков (25х25х25, 100х100х100),
  • количество участков должно быть значительно больше количества потоков (OMP_NUM_THREADS),
  • так как на суперкомпьютере отключен hyperthreading, то количество потоков (OMP_NUM_THREADS) должно быть равно количеству ядер CPU (--cpus-per-task),
  • используйте столько MPI-процессов (--ntasks), сколько необоходимо. Не рекомендуется использовать больше MPI-процессов, так как они менее эффективны потоков OpenMP,
  • установите динамическое планирование для протокола OpenMP: export OMP_SCHEDULE=dynamic

Пример запуска на CPU (рекомендуется)

В качестве примера, выполним моделирование для тестовых данных, расположенных в /opt/software/smilei/examples.
Для постановки задачи в очередь сформируем скрипт smilei-cpu.sbatch

#!/bin/bash
#SBATCH --job-name=smilei_cpu                       # Название задачи
#SBATCH --time=01:00:00                             # Максимальное время выполнения
#SBATCH --error=smilei-cpu-%j.err                   # Файл для вывода ошибок
#SBATCH --output=smilei-cpu-%j.log                  # Файл для вывода результатов
#SBATCH --constraint="type_a|type_b|type_c|type_d"  # Предпочитаемый тип узла
#SBATCH --nodes 4                                   # Число используемых узлов
#SBATCH --ntasks 4                                  # Количество MPI процессов
#SBATCH --cpus-per-task=16 # Количество ядер CPU на каждую задачу #SBATCH --mail-user=ваша_почта # Укажите ваш email для отправки уведомлений #SBATCH --mail-type=END,FAIL # События, требующие уведомления

# Деактивация окружения
source deactivate

# Очистка модулей
module purge # Загрузка модуля Smilei для работы на CPU module load Smilei/5.1-cpu

# Указание количества потоков OpenMP
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

# Динамическое распределение потоков на частицы
export OMP_SCHEDULE=dynamic # Копируем Python-скрипт для расчётов в текущую директорию cp /opt/software/smilei/examples/cpu_example.py ./ # Команда запуска
srun smilei cpu_example.py

# Рекомендуемая пропорция ресурсов на cHARISMa:
# - на узлах типов A, B, C, D: 64 ядра CPU распределенно на 4 узла
# В данном примере запуск произойдет на 4 узлах по 16 ядер на каждом.

Для постановки задачи в очередь необходимо выполнить команду sbatch smilei-cpu.sbatch.Посмотреть состояние своих задач можно с помощью команды mj.
Результат выполнения скрипта будет сохранён в файл smilei-cpu-00000.log (где 00000 - номер задачи в очереди)Сообщения, выводимые в процессе работы Smilei, будут записаны в файл smilei-cpu-00000.err (где 00000 - номер задачи в очереди).

Пример запуска на GPU

В качестве примера, выполним моделирование для тестовых данных, расположенных в /opt/software/smilei/examples.
Для постановки задачи в очередь сформируем скрипт smilei-gpu.sbatch

#!/bin/bash
#SBATCH --job-name=smilei_gpu                       # Название задачи
#SBATCH --time=01:00:00                             # Максимальное время выполнения
#SBATCH --error=smilei-gpu-%j.err                   # Файл для вывода ошибок
#SBATCH --output=smilei-gpu-%j.log                  # Файл для вывода результатов
#SBATCH --constraint="type_a|type_b|type_c"         # Тип узла
#SBATCH --nodes 1                                   # Число используемых узлов
#SBATCH --ntasks 1                                  # Количество MPI процессов
#SBATCH --gpus=1 # Количество графических процессоров
#SBATCH --cpus-per-task=4                          # Количество ядер CPU на задачу #SBATCH --mail-user=ваша_почта # Укажите ваш email для отправки уведомлений #SBATCH --mail-type=END,FAIL # События, требующие уведомления

# Деактивация окружения
source deactivate

# Очистка модулей
module purge # Загрузка модуля Smilei для работы на GPU module load Smilei/5.1-gpu

# Указание количества потоков OpenMP
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

# Динамическое распределение потоков на частицы
export OMP_SCHEDULE=dynamic # Копируем Python-скрипт для расчётов в текущую директорию cp /opt/software/smilei/examples/gpu_example.py ./ # Команда запуска
srun smilei gpu_example.py

# Рекомендуемая пропорция ресурсов на cHARISMa:
# - на узлах типов A, B, C, E: 1 GPU и 4 ядра CPU
# Как можно больше заполняйте память GPU. Отслеживайте загрузку памяти через: https://lk.hpc.hse.ru

Для постановки задачи в очередь необходимо выполнить команду sbatch smilei-gpu.sbatch. Посмотреть состояние своих задач можно с помощью команды mj.
Результат выполнения скрипта будет сохранён в файл smilei-gpu-00000.log (где 00000 - номер задачи в очереди)Сообщения, выводимые в процессе работы Smilei, будут записаны в файл smilei-cpu-00000.err (где 00000 - номер задачи в очереди).

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


 

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