Авторитетность издания
Добавить в закладки
Следующий номер на сайте
Реализация некоторых приложений проекта Mantevo на платформе OpenTS DMPI
Аннотация:В статье кратко описывается реализация приложений 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 |
|
Количество просмотров: 3006 |
Статья в формате 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
|
Постоянный адрес статьи: http://swsys.ru/index.php?id=4951&page=article |
Версия для печати |
Статья опубликована в выпуске журнала № 4 за 2022 год. [ на стр. 654-659 ] |
Возможно, Вас заинтересуют следующие статьи схожих тематик:
- Оптимизация процесса обнаружения орбит новых космических объектов с помощью параллельного расчета возможных орбит
- Использование возможностей математической библиотеки Intel MKL в параллельных программах на языке Т++ для Т-системы с открытой архитектурой
- Программный комплекс оптимизации законов управления
- Реализация алгоритма оптимизации параметров молекулярно-динамического потенциала REAXFF
- Разработка алгоритма параллельных вычислений для описания массопереноса в поре
Назад, к списку статей