Том 19, № 1Страницы 77 - 82 Peculiarity of Dynamic Memory Allocation Using the Openacc Standard
N.M. Kuzmin, A.V. KhoperskovОсобенность отображения памяти центрального процессора (CPU) в память графического процессора (GPU) обсуждается при ее динамическом выделении с использованием директив OpenACC. Проблема состоит в том, что программа ассоциирует все байты оперативной памяти компьютера между начальным и конечным элементами динамического массива с байтами памяти графического процессора вне зависимости от того, все ли эти байты в действительности заняты элементами массива. Это происходит в случае, если данные не занимают единое (непрерывное) пространство в оперативной памяти. Это приводит к неоправданному и непрогнозируемому заранее
увеличению объема памяти графического процессора в десятки и сотни раз, которое выделяется для хранения динамического массива. Приведен исходный код динамического выделения непрерывного блока памяти для двумерных массивов на языке C. Данный подход может быть легко обобщен на случай большего количества измерений. Проведенное тестирование показало, что при таком подходе размеры динамических массивов в памяти центрального и графического процессоров совпадают.
Полный текст- Ключевые слова
- динамические массивы; выделение памяти; стандарт OpenACC; параллельные вычисления.
- Литература
- 1. Гервич, Л.Р. Об автоматизации применения размещения данных с перекрытиями в распределенной памяти / Л.Р. Гервич, Б.Я. Штейнберг // Вестник ЮУрГУ. Серия: Математическое моделирование и программирование. – 2023. – Т. 16, № 1. – С. 59–68.
2. Krasnov, M.M. The Use of Functional Programming Library for Parallel Computing on CUDA / M.M. Krasnov, O.B. Feodoritova // Programming and Computer Software. – 2024. –
V. 50, № 1. – P. 11–23.
3. Yohei Miki. Unified Schemes for Directive-Based GPU Offloading / Yohei Miki, Toshihiro Hanawa // IEEE Access. – 2024. – V. 12, № 1. – P. 181644–181665.
4. OpenACC-Standard.org. The OpenACC Application Programming Interface Version 3.4. – URL: https://www.openacc.org/sites/default/files/inline-images/Specification/OpenACC-
3.4.pdf (дата обращения: 15.01.2026).
5. Subramanian, S. Techniques, Tricks, and Algorithms for Efficient GPU-Based Processing of Higher Order Hyperbolic PDEs / S. Subramanian, D.S. Balsara, D. Bhoriya et al // Communications on Applied Mathematics and Computation. – 2024. – V. 6, № 4. – P. 2336–2384.
6. Tomanovic, I. CFD Code Parallelization on GPU and the Code Portability / I. Tomanovic, S. Belosevic, A. Milicevic et al // Advanced Theory and Simulations. – 2024. – V. 8, № 3. –
Article ID: 2400629.
7. Joel, E. D. Clacc: OpenACC for C/C++ in Clang. / E. D. Joel, Seyong Lee, Valero-Lara P. et al // The International Journal of High Performance Computing Applications. – 2024. –
V. 38, № 5. – P. 427–446.
8. Krasnov, M.M. Functional Programming Libraries for Graphics Accelerators / M.M. Krasnov, O.B. Feodoritova // Supercomputing Frontiers and Innovations. – 2022. – V. 9, № 4. –
P. 28–37.
9. NVIDIA Corporation. NVIDIA HPC SDK Version 25.5 Documentation. – URL: https://docs.nvidia.com/hpc-sdk/index.html (дата обращения: 15.01.2026).