Control Systems and Computers, N2, 2023, Стаття 6

https://doi.org/10.15407/csc.2023.03.061

Zosimov V.V., Bulgakova O.S. Optimizing Computational Performance with OpenMP Parallel Programming Techniques. Control Systems and Computers. 2023. № 3. С. 61-68.

УДК 004.42

В.В. Зосімов, д.т.н., професор, Київський національний університет імені Тараса Шевченка, Україна, ORCID: https://orcid .org/0000-0003-0824-4168, Scopus Author ID 57188682230, 04116, м. Київ, вул. Богдана Гаврилишина, 24, Україна, zosimovvv@gmail.com

О.С. Булгакова, к.т.н., доцент, Київський національний університет імені Тараса Шевченка, Україна, ORCID: https://orcid .org/0000-0002-6587-8573; Scopus Author ID 57188687900, 04116, м. Київ, вул. Богдана Гаврилишина, 24, Україна, sashabulgakova2@gmail.com

ОПТИМІЗАЦІЯ ОБЧИСЛЮВАЛЬНОЇ ПРОДУКТИВНОСТІ ЗА ДОПОМОГОЮ МЕТОДІВ ПАРАЛЕЛЬНОГО ПРОГРАМУВАННЯ OPENMP

Вступ. Поява багатоядерних та багатопроцесорних систем вимагає ефективних програмних підходів для розкриття їх повного потенціалу. Однак паралельне програмування залишається складним завданням, що вимагає специфічної експертизи та інструментів. OpenMP, відомий стандарт для паралельного програмування, пропонує розробникам можливість легко впроваджувати паралельні конструкції в їхні додатки, гарантуючи масштабованість та адаптивність. Багато досліджень зосереджено на потенціалі та обмеженнях OpenMP, пропонуючи нові методи для підвищення продуктивності. Усвідомлюючи критичну роль паралельних обчислень у сучасних високопродуктивних системах, ця стаття має на меті продемонструвати впровадження паралельних обчислень із використанням OpenMP. Ми маємо намір порівняти виконання програми в різних сценаріях: із використанням OpenMP, без нього та у порівнянні з іншими методами паралельних обчислень. У такий спосіб, ми прагнемо висвітлити реальні переваги інтеграції OpenMP у процес розробки програмного забезпечення.

Мета статті. Дослідження можливостей паралельних обчислень за допомогою OpenMP, порівняння його продуктивності в різних сценаріях використання, а також виявлення переваг та особливостей інтеграції OpenMP у процесі розробки програмного забезпечення.

Методи. Системний підхід, аналітичний метод, експериментальний метод.

Результати. При порівнянні OpenMP з рідним потокуванням в C++ та Task Parallel Library (TPL) в C#, OpenMP в C++ постійно продемонстрував відмінну продуктивність, особливо для більших наборів даних. TPL в C# також виявив заслужену ефективність, перевершивши рідне потокування C# та звузивши відставання у продуктивності порівняно з рішеннями на C++. Хоча переваги використання OpenMP в C++ для завдань, що потребують інтенсивних обчислень, були очевидними, стало ясно, що мовна та платформенна специфіка відіграють ключові ролі у визначенні продуктивності паралелізації. Асинхронні моделі програмування, такі як TPL, пропонують значуще прискорення у своїх конкретних контекстах, наприклад, у C#. Здебільшого, хоча C++ з OpenMP виділявся як оптимальне рішення для паралельної обробки в цьому дослідженні, вибір технології залежить від ширшого екосистемного контексту та специфічних вимог кожного проєкту.

Висновки. Представлено дослідження паралельних обчислень, зокрема порівняння продуктивності OpenMP у C++ і Python. Крім того, протиставляються технології OpenMP і TPL (C++, C#). Було встановлено показники ефективності, які демонструють переваги та недоліки кожної методології. Окрім числових даних, дослідження дає змогу зрозуміти особливості кожної моделі паралельних обчислень, що може допомогти розробникам у виборі правильного інструменту.

Завантажити повний текст! (англійською)

Ключові слова: паралельні обчислення, OpenMP, TPL, C++, Python, потоки, паралелізм.

  1. OpenMP, [online]. Available at: https://www.openmp.org/ [Accessed: 02 Aug. 2023].
  2. Reinders, J., 2007. “Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism”.
  3. Hoffmann, R.B., Löff, J., Griebler, D. et al. “OpenMP as runtime for providing high-level stream parallelism on multi-cores”. JSupercomput 78, 7655–7676, 2022. https://doi.org/10.1007/s11227-021-04182-9.
  4. 4. Ferat, M., Pereira, R., Roussel, A., Carribault, P., Steffenel, LA., Gautier, T. “Enhancing MPI+OpenMP Task Based Applications for Heterogeneous Architectures with GPU Support” OpenMP in a Modern World: From Multi-device Support to Meta Programming. IWOMP 2022. Lecture Notes in Computer Science, vol 1352. Springer, Cham. 2022. https://doi.org/10.1007/978-3-031-15922-0_1.
  5. Polet, PÉ., Fantar, R., Gautier, T. “Introducing Moldable Tasks in OpenMP” Advanced Task-Based, Device and Compiler Programming. IWOMP 2023. Lecture Notes in Computer Science, vol 14114. Springer, Cham, 2023. https://doi.org/10.1007/978-3-031-40744-4_4.
  6. Parallel Programming Using Threads, [online]. Available at: https://www.oreilly.com/library/view/parallel-and-concurrent [Accessed 20 Aug. 2023].
  7. Task Parallel Library (TPL), [online]. Available at: https://learn.microsoft.com [Accessed: 21 Aug. 2023].

 Надійшла 19.09.2023