RAS MathematicsПрограммирование Programming and Computer Software

  • ISSN (Print) 0132-3474
  • ISSN (Online) 3034-5847

The use of functional programming library to parallelize on graphics accelerators with CUDA technology

PII
10.31857/S0132347424010027-1
DOI
10.31857/S0132347424010027
Publication type
Article
Status
Published
Authors
Volume/ Edition
Volume / Issue number 1
Pages
15-29
Abstract
Modern graphics accelerators (GPUs) can signi cantly speed up the execution of numerical tasks. However, porting programs to graphics accelerators is not an easy task, sometimes requiring their almost complete rewriting. CUDA graphics accelerators, thanks to technology developed by NVIDIA, allow you to have a single source code for both conventional processors (CPUs) and CUDA. However, in this single source code, you need to somehow tell the compiler which parts of this code to parallelize on shared memory. The use of the functional programming library developed by the authors allows you to hide the use of one or another parallelization mechanism on shared memory within the library and make the user source code completely independent of the computing device used (CPU or CUDA). This article shows how this can be done.
Keywords
С++ функциональное программирование численные методы CUDA OpenMP OpenCL
Date of publication
17.09.2025
Year of publication
2025
Number of purchasers
0
Views
17

References

  1. 1. TOP 500. URL: https://www.top500.org
  2. 2. NVIDIA. URL: https://www.nvidia.com
  3. 3. TOP 50. URL: http://top50.supercomputers.ru
  4. 4. OpenCL. URL: https://www.khronos.org/opencl/
  5. 5. OpenACC. URL: https://www.openacc.org
  6. 6. CUDA Zone. URL: https://developer.nvidia.com/cuda-zone
  7. 7. Краснов М.М. Библиотека функционального программирования для языка C++ // Программирование. 2020. № 5. С. 47-59. DOI: 10.31857/S0132347420050040
  8. 8. Краснов М.М. Операторная библиотека для решения трехмерных сеточных задач математической физики с использованием графических плат с архитектурой CUDA // Математическое моделирование. 2015. Т. 27. № 3. С. 109-120. URL: http://www.mathnet.ru/links/38633e7a627ab2ce1527ae4a092be72f/mm3585.pdf
  9. 9. Краснов М.М. Канд. дисс. “Сеточно-операторный подход к программированию задач математической физики”. Автореф. URL: http://keldysh.ru/council/1/2017-krasnov/avtoref.pdf
  10. 10. Haskell language. URL: https://www.haskell.org/
  11. 11. Маклейн С. Категории для работающего математика / перевод с англ. под ред. В.А. Артамонова. М.: ФИЗМАТЛИТ, 2004. 352 с. ISBN 5-9221-0400-4.
  12. 12. Bartosz Milewski. Category Theory for Programmers. URL: https://github.com/hmemcpy/milewski-ctfp-pdf/releases/download/v1.3.0/category-theory-for-programmers.pdf
  13. 13. Veldhuizen Т. Expression Templates. C++ Report. Vol. 7. № 5. June 1995. pp. 26-31.
  14. 14. Coplien J.O. Curiously recurring template patterns. C++ Report, February 1995, pp. 24–27.
  15. 15. David Abrahams, Aleksey Gurtovoy. C++ Template Metaprogramming. Addison-Wesley. 2004. 400 с. ISBN 978-0-321-22725-6.
  16. 16. Краснов М. М. Метапрограммирование шаблонов C++ в задачах математической физики. М.: ИПМ им. М.В. Келдыша, 2017. 84 с. http://dx.doi.org/10.20948/mono-2017-krasnov10.20948/mono-2017-krasnov.
  17. 17. Краснов М. М. Применение символьного дифференцирования для решения ряда вычислительных задач // Препринты ИПМ им. М.В. Келдыша. 2017. № 4. 24 с. http://dx.doi.org/10.20948/prepr-2017-410.20948/prepr-2017-4.
  18. 18. Краснов М. М. Применение функционального программирования при решении численных задач // Препринты ИПМ им. М.В. Келдыша. 2019. № 114. 36 с. http://dx.doi.org/10.20948/prepr-2019-11410.20948/prepr-2019-114.
  19. 19. Вычислительный комплекс K-60. https://www.kiam.ru/MVS/resourses/k60.html.
QR
Translate

Индексирование

Scopus

Scopus

Scopus

Crossref

Scopus

Higher Attestation Commission

At the Ministry of Education and Science of the Russian Federation

Scopus

Scientific Electronic Library