Preview

Труды Института системного программирования РАН

Расширенный поиск

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

https://doi.org/10.15514/ISPRAS-2021-33(5)-10

Аннотация

Современные графические ускорители (GPU) позволяют существенно ускорить выполнение численных задач. Однако перенос программ на графические ускорители является непростой задачей. Иногда перенос программ на такие ускорители осуществляется путём практически полного их переписывания (например, при использовании технологии OpenCL). При этом возникает непростая задача поддержки двух независимых исходных кодов. Однако, графические ускорители CUDA, благодаря разработанной компанией NVIDIA технологии, позволяют иметь единый исходный код как для обычных процессоров (CPU), так и для CUDA. Машинный код, генерируемый при компиляции этого единого текста, зависит от того, каким компилятором он компилируется (обычным, таким, как gcc, icc и msvc, или компилятором для CUDA, nvcc). Однако, в этом едином исходном коде нужно каким-то образом указать компилятору, какие части этого кода нужно распараллеливать на общей памяти. Для CPU это обычно делается с помощью OpenMP и специальных прагм компилятору. Для CUDA распараллеливание делается совершенно по-другому. Применение разработанной авторами библиотеки функционального программирования позволяет скрыть использование того или иного механизма распараллеливания на общей памяти внутри библиотеки и сделать пользовательский исходный код полностью независимым от используемого вычислительного устройства (CPU или CUDA). В настоящей статье показывается, как это можно сделать.

Об авторах

Михаил Михайлович КРАСНОВ
Институт прикладной математики им. М.В. Келдыша РАН, Московский физико-технический институт
Россия

Кандидат физико-математических наук, старший научный сотрудник ИПМ им. М.В. Келдыша РАН, доцент кафедры информатики МФТИ



Ольга Борисовна ФЕОДОРИТОВА
Институт прикладной математики им. М.В. Келдыша РАН
Россия

Старший научный сотрудник



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

1. TOP500. URL: https://www.top500.org/

2. OpenCL. URL: https://www.khronos.org/opencl/

3. OpenACC. URL: https://www.openacc.org/

4. NVIDIA CUDA. URL: https://developer.nvidia.com/language-solutions

5. М.М. Краснов. Библиотека функционального программирования для языка C++. Программирование, том 46, no. 5, 2020 г., стр. 47-59 / M.M. Krasnov. Functional Programming Library for C++. Programming and Computer Software, vol. 46, no. 5, 2020, pp. 330-340.

6. J.O. Coplien. Curiously recurring template patterns. C++ Report, vol. 7, issue 2, 1995, pp. 24–27.

7. D. Abrahams, A. Gurtovoy. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond. Addison-Wesley, 2004, 408 p.

8. M.M. Krasnov. C++ templates metaprogramming in problems of mathematical physics. KIAM RAS, 2017, 84 p. DOI: 10.20948/mono-2017-krasnov.

9. T. Veldhuizen. Expression Templates. C++ Report, vol. 7, issue 5, 1995, pp. 26-31.

10. B. Stroustrup. The C++ Programming Language. Fourth Edition. Addison-Wesley, 2013, 1376 p.

11. B. Stroustrup. Programming: Principles and Practice Using C++. Second Edition. Addison-Wesley, 2014, 1312 p.

12. B. Stroustrup. A Tour of C++. Addison-Wesley, 2014, 192 p.

13. B. Stroustrup. The Design and Evolution of C++. Addison-Wesley, 1994, 480 p.

14. The C++ Resources Network. URL: http://www.cplusplus.com/.


Рецензия

Для цитирования:


КРАСНОВ М.М., ФЕОДОРИТОВА О.Б. Использование библиотеки функционального программирования для решения численных задач на графических ускорителях с технологией CUDA. Труды Института системного программирования РАН. 2021;33(5):167-180. https://doi.org/10.15514/ISPRAS-2021-33(5)-10

For citation:


KRASNOV M.M., FEODORITOVA O.B. Using the functional programming library for solving numerical problems on graphics accelerators with CUDA technology. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2021;33(5):167-180. https://doi.org/10.15514/ISPRAS-2021-33(5)-10



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)