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

Обложка

Цитировать

Полный текст

Открытый доступ Открытый доступ
Доступ закрыт Доступ предоставлен
Доступ закрыт Только для подписчиков

Аннотация

Современные графические ускорители (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

Список литературы

  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.

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML
2. Рис. 1.

Скачать (54KB)
3. Рис. 2.

Скачать (35KB)
4. Рис. 3.

Скачать (32KB)

© Российская академия наук, 2024

Данный сайт использует cookie-файлы

Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта.

О куки-файлах