EISSN 1726-3522
Язык: ru

МОДЕЛИРОВАНИЕ МЕТОДОМ ЧАСТИЦ НА GPU С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА GLSL (2023)

Рассмотрено моделирование гравитационной задачи 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. Программы и алгоритмы для решения отдельных задач на вычислительных машинах
eLIBRARY ID
50397346
Текстовый фрагмент статьи