DOI: https://doi.org/10.26089/NumMet.v24r104

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

Авторы

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

Ключевые слова:

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

Аннотация

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


Загрузки

Опубликован

2023-02-08

Выпуск

Раздел

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

Автор

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

Яндекс
ул. Льва Толстого, 16, 119021, Москва
• ведущий разработчик программного обеспечения;
Университетская гимназия (школа-интернат) МГУ имени М.В.Ломоносова
Ломоносовский пр-кт, 27, корп. 7, 119192, Москва
• учитель


Библиографические ссылки

  1. R. W. Hockney and J. W. Eastwood, Computer Simulation Using Particles (McGraw-Hill, New York, 1981).
  2. J. Harnois-Déraps, U.-L. Pen, I. T. Iliev, et al., “High-Performance P^3M N-Body Code: CUBEP^3M,” Mon. Not. R. Astron. Soc. 436 (1), 540-559 (2013).
    doi 10.1093/mnras/stt1591.
  3. P. E. Kyziropoulos, C. K. Filelis-Papadopoulos, and G. A. Gravvanis, “Parallel N-Body Simulation Based on the PM and P3M Methods Using Multigrid Schemes in Conjunction with Generic Approximate Sparse Inverses,” Math. Probl. Eng. 2015, Article ID 450980 (2015).
    doi 10.1155/2015/450980.
  4. J. S. Bagla, “TreePM: A Code for Cosmological N-Body Simulations,” J. Astrophys. Astr. 23, 185-196 (2002).
    doi 10.1007/BF02702282.
  5. K. Xu and Y. Jing, “An Accurate P^3M Algorithm for Gravitational Lensing Studies in Simulations,” Astrophys. J. 915 (2) (2021).
    doi 10.3847/1538-4357/ac0249.
  6. G. L. Bryan, M. L. Norman, B. W. O’Shea, et al., “ENZO: An Adaptive Mesh Refinement Code for Astrophysics,” Astrophys. J. Suppl. 211 (2), Article ID 19 (2014).
    doi 10.1088/0067-0049/211/2/19.
  7. The Source Code of PM, PTM, GPU Version.
    https://github.com/resetius/graphtoys . Cited December 26, 2022.
  8. The Source Code of PM, PTM, CPU Version.
    https://github.com/resetius/fdm . Cited December 26, 2022.
  9. A. A. Samarskii and E. S. Nikolaev, Numerical Methods for Grid Equations (Nauka, Moscow, 1978; Birkh854user, Basel, 1989).
  10. L. Verlet, “Computer ‘Experiments’ on Classical Fluids. I. Thermodynamical Properties of Lennard-Jones Molecules,” Phys. Rev. 159 (1), 98-103 (1967).
  11. P. P. Ewald, “Die Berechnung Optischer und Elektrostatischer Gitterpotentiale,” Annalen der Physik 369 (3), 253-287 (1921).
    doi 10.1002/andp.19213690304.
  12. D. S. Gorbunov and V. A. Rubakov, Introduction to the Theory of the Early Universe: Hot Big Bang Theory (URSS, Moscow, 2008; World Scientific, Singapore, 2011).
  13. G. G. Byrd, A. D. Chernin, and M. J. Valtonen, Cosmology: Foundations and Frontiers (URSS, Moscow, 2007).
  14. A. N. Tikhonov and A. A. Samarskii, Equations of Mathematical Physics (Nauka, Moscow, 2004; Dover Publications, New York, 2013).
  15. D. Wolf, OpenGL 4. Shading Language Cookbook (Packt Publishing, Birmingham, 2018).
  16. L. Nyland, M. Harris, and J. Prins, “Fast N-Body Simulation with CUDA,” in GPU Gems 3
    https://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-31-fast-n-body-simulation-cuda . Cited December 28, 2022.
  17. A. V. Boreskov and A. A. Harlamov, Basics with CUDA Technology (DMK Press, Moscow, 2019) [in Russian].
  18. Y. Miki and M. Umemura, “MAGI: Many-Component Galaxy Initializer,” Mon. Not. R. Astron. Soc. 475 (2), 2269-2281 (2018).
    doi 10.1093/mnras/stx3327.
  19. A. Petitet, R. C. Whaley, J. Dongarra, and A. Cleary, “HPL -- A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers,”
    https://netlib.org/benchmark/hpl/. Cited July 21, 2022.
  20. Apple Accelerate.
    https://developer.apple.com/documentation/accelerate . Cited December 27, 2022.
  21. Atlas Library.
    http://math-atlas.sourceforge.net . Cited December 27, 2022.
  22. Apple M1 Performance in Teraflops.
    https://www.ixbt.com/news/2021/02/18/soc-apple-m1x-geforce-gtx-1070.html [in Russian]. Cited December 27, 2022.
  23. Radeon RX6600XT Specifications.
    https://www.techpowerup.com/gpu-specs/radeon-rx-6600-xt.c3774 . Cited December 27, 2022.
  24. GeForce RTX3060 Specifications.
    https://www.techpowerup.com/gpu-specs/geforce-rtx-3060.c3682 . Cited December 27, 2022.
  25. Radeon RX6800XT Specifications.
    https://www.techpowerup.com/gpu-specs/radeon-rx-6800-xt.c3694 . Cited December 27, 2022.
  26. GeForce RTX3080 Specifications.
    https://www.techpowerup.com/gpu-specs/geforce-rtx-3080.c3621 . Cited December 27, 2022.