ОМНПрограммирование Programming and Computer Software

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

Применение библиотеки функционального программирования для распараллеливания вычислений на CUDA

Код статьи
10.31857/S0132347424010027-1
DOI
10.31857/S0132347424010027
Тип публикации
Статья
Статус публикации
Опубликовано
Авторы
Том/ Выпуск
Том / Номер выпуска 1
Страницы
15-29
Аннотация
Современные графические ускорители (GPU) позволяют существенно ускорить выполнение численных задач. Однако перенос программ на графические ускорители является непростой задачей, иногда требующей практически полного их переписывания. Графические ускорители CUDA, благодаря разработанной компанией NVIDIA технологии, позволяют иметь единый исходный код как для обычных процессоров (CPU), так и для CUDA. Однако распараллеливание на общей памяти все равно делается по-разному и его нужно указывать явно. Применение разработанной авторами библиотеки функционального программирования позволяет скрыть использование того или иного механизма распараллеливания на общей памяти внутри библиотеки и сделать пользовательский исходный код полностью независимым от используемого вычислительного устройства (CPU или CUDA). В настоящей статье показывается, как это можно сделать.
Ключевые слова
С++ функциональное программирование численные методы CUDA OpenMP OpenCL
Дата публикации
17.09.2025
Год выхода
2025
Всего подписок
0
Всего просмотров
16

Библиография

  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
Перевести

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

Scopus

Scopus

Scopus

Crossref

Scopus

Высшая аттестационная комиссия

При Министерстве образования и науки Российской Федерации

Scopus

Научная электронная библиотека