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