RUS  ENG
Полная версия
ЖУРНАЛЫ // Вычислительные методы и программирование // Архив

Выч. мет. программирование, 2023, том 24, выпуск 1, страницы 37–54 (Mi vmp1073)

Параллельные программные средства и технологии

Моделирование методом частиц на GPU с использованием языка GLSL

А. В. Озерицкийab

a Яндекс, Москва, Российская Федерация
b Университетская гимназия (школа-интернат) МГУ имени М. В. Ломоносова, Москва, Российская Федерация

Аннотация: Рассмотрено моделирование гравитационной задачи N тел с использованием алгоритмов PM и P3M. Реализация алгоритмов для GPU осуществлена с применением вычислительных шейдеров. Предложенный подход использует CPU-код только для синхронизации и запуска шейдеров и не содержит вычислительных частей, реализуемых на CPU; в том числе полностью отсутствует копирование данных между CPU и GPU. Приводятся параллельный алгоритм размещения частиц по ячейкам сетки и параллельный алгоритм распределения масс по узлам сетки. Основой алгоритмов является параллельное построение списков, соответствующих ячейкам сетки. Алгоритмы полностью распараллелены и не содержат частей, исполняемых в один поток. Для расчета одновременно с визуализацией часть вычислений сделана в вершинном шейдере. Выполнить их позволило использование буферных объектов в вершинном шейдере и специально подготовленных данных вместо вершин в качестве входа. Приведены результаты численных расчетов на примере образования галактических скоплений в расширяющейся согласно модели Фридмана плоской вселенной. В качестве модели вселенной брался куб с периодическими краевыми условиями по всем осям. Максимальное число частиц, с которым проводились расчеты, — 108. Для моделирования использовались современный кроссплатформенный API Vulkan и язык GLSL. Результаты расчетов на процессорах Apple M1 и Ryzen 3700X сравниваются с результатами расчетов на обычных видеокартах Apple M1 и NVIDIA RTX 3060. Параллельный алгоритм для CPU реализован с помощью OpenMP. Проведено сравнение производительности алгоритма с результатами других авторов, причем делаются качественные сравнения самих результатов вычислений и сравнение времени работы алгоритмов. Также приведено сравнение времени работы программы для GPU и похожей программы для кластера из многих узлов.

Ключевые слова: моделирование методом части, параллельное программирование, задача N тел, язык GLSL, API Vulkan, уравнение Пуассона.

УДК: 519.688

Поступила в редакцию: 07.10.2022
Принята в печать: 21.12.2022

DOI: 10.26089/NumMet.v24r104



© МИАН, 2026