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
Тестовые исходные данные и примеры расположены на суперкомпьютере в каталогах
иПользователи: Международная лаборатория суперкомпьютерного атомистического моделирования и многомасштабного анализа, Департамент прикладной математики, любые подразделения НИУ ВШЭ
Ключевые особенности
Отличительные черты- разработан с учетом требований высокопроизводительных вычислений (HPC) и может эффективно работать на суперкомпьютерах, используя тысячи процессорных ядер,
- код способен масштабироваться на большие системы, что позволяет моделировать очень большие и сложные плазменные системы,
- поддерживает гибридные вычислительные архитектуры, включая CPU и GPU, что делает его гибким и эффективным для различных аппаратных конфигураций,
- может использоваться для моделирования различных типов плазменных процессов, таких как лазерно-материальные взаимодействия, астрофизические плазмы, инерциальный термоядерный синтез и многие другие.
- лазерно-плазменные взаимодействия: моделирование магнитных элементов (диполей, квадруполей, секступолей и т.д.), стоячих и путешествующих волновых рф-камер, рассеяния на материалах и другими факторами,
- коллективная динамика: включает учет коротковолновых и длинноволновых возмущений, когерентного синхротронного излучения, продольного и поперечного пространственного заряда, а также внутреннего и Тушековского рассеяния,
- взаимодействие с другими программами: использование файлов SDDS (Self-Describing Data Sets) для обмена данными с другими программами, такими как ASTRA, IMPACT и TRACK,
- анализ фазового пространства: вычисление параметров Твисса, моментов и других характеристик,
- обработка данных: использование общего набора инструментов SDDS для постобработки и графического отображения данных, включая построение графиков, фильтрацию, сортировку, анализ частот и фиттинг.
Выполнение расчетов на суперкомпьютере
Для выполнения расчёта на суперкомпьютере необходимо подготовить скрипт-файл для очереди задач с запросом требуемых ресурсов (см. общую инструкцию по запуску задач на суперкомпьютере).
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:
Пример запуска на CPU (рекомендуется)
В качестве примера, выполним моделирование для тестовых данных, расположенных в
Для постановки задачи в очередь сформируем скрипт 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
В качестве примера, выполним моделирование для тестовых данных, расположенных в
Для постановки задачи в очередь сформируем скрипт 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 - номер задачи в очереди).
Дополнительная информация
- Документация Smilei
- Репозиторий Smilei на GitHub
- Руководство по использованию Smilei
- Инструкция по работе с системой мониторинга эффективности HPC TaskMaster
Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.