Применение библиотеки функционального программирования для распараллеливания вычислений на CUDA
- Авторы: Краснов М.М.1, Феодоритова О.Б.1
-
Учреждения:
- Институт прикладной математики им. М.В. Келдыша Российской академии наук
- Выпуск: № 1 (2024)
- Страницы: 15-29
- Раздел: ЯЗЫКИ, КОМПИЛЯТОРЫ И СИСТЕМЫ ПРОГРАММИРОВАНИЯ
- URL: https://journals.rcsi.science/0132-3474/article/view/259176
- DOI: https://doi.org/10.31857/S0132347424010027
- EDN: https://elibrary.ru/HVJUIU
- ID: 259176
Цитировать
Аннотация
Современные графические ускорители (GPU) позволяют существенно ускорить выполнение численных задач. Однако перенос программ на графические ускорители является непростой задачей, иногда требующей практически полного их переписывания. Графические ускорители CUDA, благодаря разработанной компанией NVIDIA технологии, позволяют иметь единый исходный код как для обычных процессоров (CPU), так и для CUDA. Однако распараллеливание на общей памяти все равно делается по-разному и его нужно указывать явно. Применение разработанной авторами библиотеки функционального программирования позволяет скрыть использование того или иного механизма распараллеливания на общей памяти внутри библиотеки и сделать пользовательский исходный код полностью независимым от используемого вычислительного устройства (CPU или CUDA). В настоящей статье показывается, как это можно сделать.
Ключевые слова
Полный текст
Об авторах
М. М. Краснов
Институт прикладной математики им. М.В. Келдыша Российской академии наук
Автор, ответственный за переписку.
Email: kmm@kiam.ru
ORCID iD: 0000-0001-7988-6323
Россия, 125047, Москва, Миусская пл., д. 4
О. Б. Феодоритова
Институт прикладной математики им. М.В. Келдыша Российской академии наук
Email: feodor@kiam.ru
ORCID iD: 0000-0002-2792-9376
Россия, 125047, Москва, Миусская пл., д. 4
Список литературы
- TOP 500. URL: https://www.top500.org
- NVIDIA. URL: https://www.nvidia.com
- TOP 50. URL: http://top50.supercomputers.ru
- OpenCL. URL: https://www.khronos.org/opencl/
- OpenACC. URL: https://www.openacc.org
- CUDA Zone. URL: https://developer.nvidia.com/cuda-zone
- Краснов М.М. Библиотека функционального программирования для языка C++ // Программирование. 2020. № 5. С. 47-59. doi: 10.31857/S0132347420050040
- Краснов М.М. Операторная библиотека для решения трехмерных сеточных задач математической физики с использованием графических плат с архитектурой CUDA // Математическое моделирование. 2015. Т. 27. № 3. С. 109-120. URL: http://www.mathnet.ru/links/38633e7a627ab2ce1527ae4a092be72f/mm3585.pdf
- Краснов М.М. Канд. дисс. “Сеточно-операторный подход к программированию задач математической физики”. Автореф. URL: http://keldysh.ru/council/1/2017-krasnov/avtoref.pdf
- Haskell language. URL: https://www.haskell.org/
- Маклейн С. Категории для работающего математика / перевод с англ. под ред. В.А. Артамонова. М.: ФИЗМАТЛИТ, 2004. 352 с. ISBN 5-9221-0400-4.
- Bartosz Milewski. Category Theory for Programmers. URL: https://github.com/hmemcpy/milewski-ctfp-pdf/releases/download/v1.3.0/category-theory-for-programmers.pdf
- Veldhuizen Т. Expression Templates. C++ Report. Vol. 7. № 5. June 1995. pp. 26-31.
- Coplien J.O. Curiously recurring template patterns. C++ Report, February 1995, pp. 24–27.
- David Abrahams, Aleksey Gurtovoy. C++ Template Metaprogramming. Addison-Wesley. 2004. 400 с. ISBN 978-0-321-22725-6.
- Краснов М. М. Метапрограммирование шаблонов C++ в задачах математической физики. М.: ИПМ им. М.В. Келдыша, 2017. 84 с. http://dx.doi.org/10.20948/mono-2017-krasnov10.20948/mono-2017-krasnov.
- Краснов М. М. Применение символьного дифференцирования для решения ряда вычислительных задач // Препринты ИПМ им. М.В. Келдыша. 2017. № 4. 24 с. http://dx.doi.org/10.20948/prepr-2017-410.20948/prepr-2017-4.
- Краснов М. М. Применение функционального программирования при решении численных задач // Препринты ИПМ им. М.В. Келдыша. 2019. № 114. 36 с. http://dx.doi.org/10.20948/prepr-2019-11410.20948/prepr-2019-114.
- Вычислительный комплекс K-60. https://www.kiam.ru/MVS/resourses/k60.html.