На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

4
Ожидается:
09 Декабря 2024

Реализация некоторых приложений проекта Mantevo на платформе OpenTS DMPI

Implementing some of the Mantevo project applications on the OpenTS DMPI platform
Дата подачи статьи: 10.06.2022
Дата после доработки: 04.09.2022
УДК: 519.682.3, 519.245, 519.644.7
Статья опубликована в выпуске журнала № 4 за 2022 год. [ на стр. 654-659 ]
Аннотация:В статье кратко описывается реализация приложений MiniAMR, MiniMD, MiniFE и MiniXyce из проекта Mantevo на библиотеке OpenTS DMPI и сравнивается эффективность такой реализации с оригинальной MPI-версией приложения. OpenTS – система для параллельного программирования, поддерживающая динамически загружаемые адаптеры для коммуникационного уровня. В системе реализован язык для параллельных вычислений Т++, который является расширением языка програм-мирования C++. Синтаксис языка Т++ отличается от синтаксиса языка С++ добавлением в него не-скольких ключевых слов. Система OpenTS ассимилирует многие другие технологии параллельного программирования: специальную модель общей памяти, модель распределенных потоков и объектов, распределенную сборку мусора и, наконец, высокоуровневую языковую надстройку, являющуюся уникальной по своим характеристикам технологией для поддержки максимальной совместимости с традиционными языками по синтаксису и семантике, но при этом эффективно распараллеливаемой моделью вычислений. Система OpenTS использует собственную реализацию MPI, оформленную в виде динамической библиотеки OpenTS DMPI (Dynamic MPI). Библиотека предоставляет базовое подмножество функций из стандарта MPI либо за счет переадресации вызовов к локальной библиотеке MPI, установленной на целевой системе, либо поверх протокола TCP/IP. При инициализации системы OpenTS активируется подсистема DMPI. Она динамически загружает ту локальную библиотеку MPI, которая указана в переменных окружения приложения. Некоторые из функций MPI реализованы разработчиками системы OpenTS напрямую. В проект Mantevo входят несколько параллельных приложений, в которых реализованы алгоритмы для решения некоторых дифференциальных уравнений с частными производными: симулятор молекулярной динамики, симулятор линейных радиоэлектронных схем и другие приложения.
Abstract:OpenTS is a system for parallel programming that supports dynamically loaded adapters for a communica-tion layer. The OpenTS system implements a T++ language for parallel computing, which is an extension of the C++ programming language. The syntax of the T++ language differs from the syntax of the C++ lan-guage by adding several keywords to it. The OpenTS system assimilates many other parallel programming technologies: a special shared memory model, a model of distributed threads and objects, distributed gar-bage collection, and, finally, a high-level language add-in, which is a technology unique in its characteristics to support maximum compatibility with traditional languages in syntax and semantics, but at the same time an effectively parallelizable computing model. The OpenTS system uses its own MPI implementation designed as the OpenTS DMPI dynamic library (Dynamic MPI). The OpenTS DMPI library provides a basic subset of functions from the MPI standard ei-ther by redirecting calls to the local MPI library installed on the target system, or on top of the TCP/IP proto-col. When initializing the OpenTS system, the DMPI subsystem is activated. This subsystem dynamically loads the local MPI library that is specified in the application environment variables. The developers of the OpenTS system implemented some of the MPI functions directly. The Mantevo project includes several parallel applications that implement algorithms for solving some partial differential equations: a molecular dynamics simulator, a simulator of linear electronic circuits and other applications. The paper briefly describes the implementation of the MiniAMR, MiniMD, MiniFE and MiniXyce appli-cations from the Mantevo project on the OpenTS DMPI library and compares the effectiveness of such im-plementation with the original MPI version of the application.
Авторы: Осипов В.И. (val@pereslavl.ru) - Институт программных систем им. А.К. Айламазяна РАН (научный сотрудник), Переславль-Залесский, Россия, кандидат физико-математических наук, Матвеев Г.А. (gera@prime.botik.ru) - Институт программных систем им. А.К. Айламазяна РАН (ведущий инженер-исследователь), Переславль-Залесский, Россия, Роганов В.А. (var@pereslavl.ru) - Институт программных систем им. А.К. Айламазяна РАН (научный сотрудник), Переславль-Залесский, Россия
Ключевые слова: параллельный алгоритм, язык программирования т++, opents, т-система, молекулярная динамика, метод конечных элементов, т-приложение, benchmark, circuit
Keywords: parallel algorithm, T++ programming language, opents, t-system, molecular dynamics, finite element method, t-application, benchmark, circuit
Количество просмотров: 3070
Статья в формате PDF

Размер шрифта:       Шрифт:

Система с открытой архитектурой OpenTS (или Т-система) – оригинальная российская разработка для параллельных вычислений. В ней реализован язык для параллельных вычислений Т++, который является расширением языка программирования C++. Синтаксис Т++ отличается от синтаксиса С++ добавлением в него нескольких ключевых слов. Т-система позволяет эффективно решать задачи параллельного программирования, такие как вычисление многомерных интегралов [1], реализация трассировщика лучей (ray-tracer) [2], дифференциальные уравнения с частными производными [3], проверять надежность паролей [4], использовать библиотеки CUDA [5] и Intel MKL [6].

Система OpenTS использует собственную реализацию MPI в виде динамической библио-  теки OpenTS DMPI (Dynamic MPI). При ини-  циализации системы OpenTS происходит настройка подсистемы DMPI, которая динамически загружает локальную библиотеку MPI, указаную в переменных окружения приложения. Некоторые из функций MPI реализованы разработчиками системы OpenTS напрямую.

Язык параллельного программирования T++ разработан таким образом, что необходимости использования в нем функций MPI нет. Однако, если для достижения эффективности выполнения параллельной программы программист желает использовать MPI-функции явно, то он может это сделать.

Приложение, написанное на языке Т++ с использованием вызовов функций MPI, является гибридным приложением MPI+T++. Гибридные приложения MPI+X, где Х – средство рас-  параллеливания программ, занимают в области разработки параллельных программ важное место. Примеры таких приложений – MPI+  Pthreads [7], MPI+OpenMP [8], MPI+TBB [9], MPI+OpenCL [10], MPI+CUDA [11], MPI+  HIP [12], MPI+DPC++ [13] и др.

Глобальная цель проекта OpenTS состоит в поддержке гибридной модели вычислений, когда часть приложения написана на языке Т++, а в другой части вызываются функции MPI. Настоящая статья отражает этап в достижении этой цели. Задача – показать, что при использовании такой гибридной модели нет проигрыша в эффективности по сравнению с исходной реализацией приложения, а накладные расходы при использовании такой гибридной модели невелики. Для этого несколько известных приложений проекта Mantevo реализуются с помощью библиотеки OpenTS DMPI и их эффективность сравнивается с исходным приложением.

В проект Mantevo [14] входят несколько   параллельных приложений, в которых реализованы алгоритмы для решения некоторых дифференциальных уравнений с частными производными: симуляторы молекулярной динамики и линейных радиоэлектронных схем, приложение с использованием адаптивной расчетной сетки и другие приложения. Для работы на многопроцессорных системах используется интерфейс MPI.

С каждым приложением было проведено по 10 испытаний на количестве ядер процессора от 1 до 8 с шагом 1. На всех этапах вычислялось значение средней производительности. Испытания проведены для двух платформ – OpenMPI и OpenTS DMPI. Цель – проверить, происходит ли потеря производительности при переносе приложения с платформы OpenMPI на платформу OpenTS DMPI.

Положительное значение отклонения производительности означает, что производительность приложения на платформе OpenMPI выше производительности приложения на платформе OpenTS DMPI. Если значение отклонения производительности отрицательное, то производительность приложения на платформе OpenTS DMPI выше производительности приложения на платформе OpenMPI.

Приложение MiniMD

Данное приложение [14] является упрощенной версией симулятора молекулярной динамики LAMMPS [15]. MiniMD и LAMMPS ис-  пользуют при распараллеливании метод про-  странственной декомпозиции, при которой за каждым узлом (процессором) кластера закрепляется подобласть области симуляции молекулярной динамики. Как и LAMMPS, MiniMD дает возможность пользователям определять размер области задачи, плотность атомов, температуру, радиус обрезания потенциала взаимодействия частиц. В MiniMD моделирование молекулярной системы происходит на базе потенциала взаимодействия Леннарда-Джонса и потенциала EAM (Embedded Atom Method). Приложение MiniMD может симулировать несколько типов атомов.

Реализация приложения MiniMD (и других приложений) на OpenTS DMPI происходила следующим образом. Функция С++ main пакета LAMMPS была переименована в worker.   В пакет добавлен файл на языке программирования Т++, который параллельно запускает столько задач, сколько в текущей вычислительной системе вычислительных узлов, по одной задаче на каждом вычислительном узле. Каждая из этих задач вызывает функцию worker. Обеспечивается передача параметров командной строки в каждый из экземпляров функции worker. Все вхождения файла заменяются на заголовочный файл, необходимый для корректной работы Т-системы. Происходит сборка исполняемого файла с использованием компилятора Т++.

Были проведены сравнительные испытания оригинального MPI‑приложения MiniMD и приложения MiniMD, реализованного на платформе OpenTS DMPI. Для проведения испытаний использован OpenMPI. Результаты представлены на рисунке 1.

Минимальное отклонение средней произво-  дительности составило –1,9 %, максимальное – 0,4 %, среднее составило –0,2 %. Производи-  тельность приложения MiniMD определялась исходя из статистики, выдаваемой этим приложением.

Приложение MiniFE

В MiniFE [14] строится решение стационарного уравнения теплопроводности на единичном кубе. При вычислениях используется декартова трехмерная расчетная сетка. При запуске приложения можно указать, на какое количество равных частей разбивается каждое ребро куба. Задача решается методом конечных элементов (Finite Element Method). Возникающие в процессе вычисления задачи разреженные системы линейных алгебраических уравнений решаются методом сопряженных градиентов. При распределении вычислений между вычислительными узлами (декомпозиции) используется метод рекурсивной координатной бисекции (RCB). Вершины расчетной сетки на границе между процессорами являются общими, и через них происходит обмен информацией между процессорами. Алгоритм обеспечивает оптимальное разбиение вычислений на параллельные гранулы, что позволяет эффективно распараллеливать приложение с помощью графических процессоров. Приложение является бенчмарком, то есть оценивает производительность вычислительной системы (в мегафлопсах), и может быть использовано для тестирования процессоров, в том числе графических.

Было проведено сравнительное тестирование приложений MiniFE OpenMPI и MiniFE OpenTS DMPI. Результаты представлены на рисунке 2.

Минимальное отклонение среднего времени работы составило –0,7 %, максимальное – 0,4 %, среднее составило –0,1 %, то есть производительность приложений MiniFE OpenTS DMPI и MiniFE OpenMPI приблизительно совпадает.

 

Приложение MiniXyce

 

Данное приложение [14] – простой симулятор линейных радиоэлектронных схем, написанный в стиле известной программы SPICE Калифорнийского университета в Беркли [16], который содержит анализатор, проверяющий схемы, состоящие из сопротивлений, конденсаторов и катушек индуктивности, а также источника питания.

Радиоэлектронные схемы моделируются системой дифференциально-алгебраических уравнений  где   x(t) Î Rn – вектор неизвестных (состояние схемы); q и f – функции, представляющие соответственно динамические и статические элементы схемы; b(t) Î Rm – вектор входных параметров [17].

Структура схемы должна быть простой (не допускается иерархия, содержащая дочерние подсхемы). Схема описывается системой линейных дифференциальных уравнений и решается обобщенным методом минимальных невязок (GMRES) без предобуславливания. Описание схемы находится в текстовом файле.

Результатом работы программы miniXyce является расчет состояния схемы, например, напряжения на каждом из элементов в каждый из дискретных моментов времени.

Были проведены сравнительные испытания приложения MiniXyce с использованием OpenMPI и OpenTS DMPI. Результаты представлены на рисунке 3.

Минимальное отклонение среднего времени работы составило 0,2 %, максимальное – 3,8 %, среднее – 1,7 %.

Приложение MiniAMR

Приложение предназначено для работы с адаптивными расчетными сетками, основанными на октодеревьях – рекурсивных структурах данных, каждый узел которых содержит восемь потомков. В процессе вычисления деревья постоянно меняются, некоторые узлы измельчаются (то есть появляются поддеревья), удаляются или перераспределяются между процессорами вычислительной системы. Измельчение узлов расчетной сетки происходит в точках, где возникают особенности, требующие более детальных вычислений.

Были проведены сравнительные испытания приложения MiniXyce с использованием OpenMPI и OpenTS DMPI. В процессе испытаний использовался тест, в котором моделировалось движение двух сфер. Результаты представлены на рисунке 4.

Минимальное отклонение средней производительности составило 0,7 %, максимальное – 3,8 %, среднее – 1,3 %.

Результаты и выводы

Цель данного исследования – убедиться, что гибридная реализация приложений проекта Mantevo с использованием библиотеки OpenTS DMPI не уступает в эффективности исходной реализации данного приложения на классическом MPI. В рамках проведенной работы удалось доказать, что гибридная реализация не ухудшает производительность реальных приложений. Разброс относительных изменений средних значений производительности составил от –1,9 % до 3,8 %, то есть в среднем 0,7 %, что пренебрежимо мало.

Результаты испытаний подтверждают эффективность реализации протокола MPI в системе параллельного программирования OpenTS.

Литература

1.     Абрамов С.М., Роганов В.А., Осипов В.И., Матвеев Г.А. Метастохастические адаптивные алгоритмы и их реализация в супервычислительной среде T++&MPI // Программные системы: теория и приложения. 2017. Т. 8. № 1. С. 173–191. DOI: 10.25209/2079-3316-2017-8-1-173-191.

2.     Роганов В.А., Осипов В.И., Матвеев Г.А. Интеграция приложения Tachyon с системой параллельного программирования OpenTS // Программные системы: теория и приложения. 2017. Т. 8. № 4. С. 319–326. DOI: 10.25209/2079-3316-2017-8-4-319-326.

3.     Роганов В.А., Осипов В.И., Матвеев Г.А. Решение задачи Дирихле для уравнения Пуассона методом Гаусса–Зейделя на языке параллельного программирования Т++ // Программные системы: теория и приложения. 2016. Т. 7. № 3. С. 99–107. DOI: 10.25209/2079-3316-2016-7-3-99-107.

4.     Роганов В.А., Кузнецов А.А., Матвеев Г.А., Осипов В.И. Адаптивный анализ надежности паролей при помощи гибридных суперЭВМ // Программные системы: теория и приложения. 2015. Т. 6.   № 4. C. 139–156. DOI: 10.25209/2079-3316-2015-6-4-139-155.

5.     Роганов В.А., Кузнецов А.А., Матвеев Г.А., Осипов В.И. Реализация T-системы с открытой архитектурой для CUDA-устройств с поддержкой динамического параллелизма и для гибридных суперЭВМ на их основе // Программные системы: теория и приложения. 2015. Т. 6. № 1. C. 175–188. DOI: 10.25209/2079-3316-2015-6-1-175-188.

6.     Роганов В.А., Кузнецов А.А., Матвеев Г.А., Осипов В.И. Использование возможностей математической библиотеки Intel MKL в параллельных программах на языке T++ для T-системы с открытой архитектурой // Программные продукты и системы. 2015. Т. 27. № 1. С. 43–48. DOI: 10.15827/0236-235X.109.043-048.

7.     Lecture 36: MPI, Hybrid Programming, and Shared Memory. URL: https://wgropp.cs.illinois.edu/  courses/cs598-s15/lectures/lecture36.pdf (дата обращения: 20.05.2022).

8.     Yan B., Regueiro R.A. Comparison between pure MPI and hybrid MPI-OpenMP parallelism for Discrete Element Method (DEM) of ellipsoidal and poly-ellipsoidal particles. Computational Particle Mechanics, 2019, vol. 6, no. 2, pp. 271–295. DOI: 10.1007/s40571-018-0213-8.

9.     Zhu J., Li Q. Application of hybrid MPI+TBB parallel programming model for traveling salesman problem. Proc. Int. Conf. GREENCOM-ITHINGSCPSCOM, 2013, pp. 2164–2167. DOI: 10.1109/GreenCom-iThings-CPSCom.2013.408.

10. Li M., Hawrylak P., Hale J. Combining OpenCL and MPI to support heterogeneous computing on a cluster. Proc. PEARC, 2019, art. 5, pp. 1–6. DOI: 10.1145/3332186.3333059.

11. Lai J., Yu H., Tian Z., Li H. Hybrid MPI and CUDA parallelization for CFD applications on Multi-GPU HPC clusters. Scientific Programming, 2020, vol. 2020, pp. 1–15. DOI: 10.1155/2020/8862123.

12. Hokkanen J., Louhivuori M., Markomanolis G. GPU Programming with HIP. CSC Publ., 2021, 79 p.

13. Hybrid Parallel Programming for HPC Clusters with MPI and DPC++. URL: https://www.intel.com/  content/www/us/en/developer/videos/hybrid-parallel-programming-hpc-clusters-mpi-dpc.html (дата обраще­ния: 20.05.2022).

14. Mantevo Project. URL: https://mantevo.org (дата обращения: 20.05.2022).

15.  LAMMPS Molecular Dynamics Simulator. URL: https://www.lammps.org (дата обращения: 20.05.2022).

16.  The Spice Page. URL: http://bwrcs.eecs.berkeley.edu/Classes/IcBook/SPICE/ (дата обращения: 20.05.2022).

17. Thornquist H.K., Keiter E.R., Rajamanickam S. Electrical modeling and simulation for stockpile stewardship. XRDS: Crossroads, The ACM Magazine for Students, 2013, vol. 19, no. 3, pp. 18–22. DOI: 10.1145/2425676.2425685.

References

  1. Abramov S.M., Roganov V.A., Osipov V.I., Matveev G.A. MetaStochastic adaptive algorithms and theirs implementation with parallel programming system T++ & MPI. Program Systems: Theory and Applications, 2017, vol. 8, no. 1, pp. 173–191. DOI: 10.25209/2079-3316-2017-8-1-173-191 (in Russ.).
  2. Roganov V.A., Osipov V.I., Matveev G.A. Integration of Ray Tracing system Tachyon and T-system with an open architecture (OpenTS). Program Systems: Theory and Applications, 2017, vol. 8, no. 4, pp. 319–326. DOI: 10.25209/2079-3316-2017-8-4-319-326 (in Russ.).
  3. Roganov V.A., Osipov V.I., Matveev G.A. Solving the 2D Poisson PDE by Gauss–Seidel method with parallel programming system OpenTS. Program Systems: Theory and Applications, 2016, vol. 7, no. 3, pp. 99–107. DOI: 10.25209/2079-3316-2016-7-3-99-107 (in Russ.).
  4. Roganov V.A., Kuznetsov A.A., Matveev G.A., Osipov V.I. Adaptive analysis of passwords’ reliability using computational power of hybrid supercomputers. Program Systems: Theory and Applications, 2015, vol. 6, no. 4, pp. 139–156. DOI: 10.25209/2079-3316-2015-6-4-139-155 (in Russ.).
  5. Roganov V.A., Kuznetsov A.A., Matveev G.A., Osipov V.I. Implementation of T-system with an open architecture for CUDA devices supporting dynamic parallelism and for hybrid computing clusters. Program Systems: Theory and Applications, 2015, vol. 6, no. 1, pp. 175–188. DOI: 10.25209/2079-3316-2015-6-1-175-188 (in Russ.).
  6. Roganov V.A., Kuznetsov A.A., Matveev G.A., Osipov V.I. Using possibilities of Intel MKL math library in parallel programs in T++ language for a T-system with an open architecture to improve their performance. Software and Systems, 2015, vol. 27, no. 1, pp. 43–48. DOI: 10.15827/0236-235X.109.043-048 (in Russ.).
  7. Lecture 36: MPI, Hybrid Programming, and Shared Memory. Available at: https://wgropp.cs.illinois.edu/courses/cs598-s15/lectures/lecture36.pdf (accessed May 20, 2022).
  8. Yan B., Regueiro R.A. Comparison between pure MPI and hybrid MPI-OpenMP parallelism for Discrete Element Method (DEM) of ellipsoidal and poly-ellipsoidal particles. Computational Particle Mechanics, 2019, vol. 6, no. 2, pp. 271–295. DOI: 10.1007/s40571-018-0213-8.
  9. Zhu J., Li Q. Application of hybrid MPI+TBB parallel programming model for traveling salesman problem. Proc. Int. Conf. GREENCOM-ITHINGSCPSCOM, 2013, pp. 2164–2167. DOI: 10.1109/GreenCom-iThings-CPSCom.2013.408.
  10. Li M., Hawrylak P., Hale J. Combining OpenCL and MPI to support heterogeneous computing on a cluster. Proc. PEARC, 2019, art. 5, pp. 1–6. DOI: 10.1145/3332186.3333059.
  11. Lai J., Yu H., Tian Z., Li H. Hybrid MPI and CUDA parallelization for CFD applications on Multi-GPU HPC clusters. Scientific Programming, 2020, vol. 2020, pp. 1–15. DOI: 10.1155/2020/8862123.
  12. Hokkanen J., Louhivuori M., Markomanolis G. GPU Programming with HIP. CSC Publ., 2021, 79 p.
  13. Hybrid Parallel Programming for HPC Clusters with MPI and DPC++. Available at: https://www.intel.com/content/www/us/en/developer/videos/hybrid-parallel-programming-hpc-clusters-mpi-dpc.html (accessed May 20, 2022).
  14. Mantevo Project. Available at: https://mantevo.org (accessed May 20, 2022).
  15. LAMMPS Molecular Dynamics Simulator. Available at: https://www.lammps.org (accessed May 20, 2022).
  16. The Spice Page. Available at: http://bwrcs.eecs.berkeley.edu/Classes/IcBook/SPICE/ (accessed May 20, 2022).
  17. Thornquist H.K., Keiter E.R., Rajamanickam S. Electrical modeling and simulation for stockpile stewardship. XRDS: Crossroads, The ACM Magazine for Students, 2013, vol. 19, no. 3, pp. 18–22. DOI: 10.1145/2425676.2425685.

Постоянный адрес статьи:
http://swsys.ru/index.php?id=4951&like=1&page=article
Версия для печати
Статья опубликована в выпуске журнала № 4 за 2022 год. [ на стр. 654-659 ]

Возможно, Вас заинтересуют следующие статьи схожих тематик: