Статья опубликована в рамках: XC Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 08 июня 2020 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
РЕАЛИЗАЦИЯ ПАРАЛЛЕЛЬНЫХ ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ MPI.NET
DEVELOPMENT OF PARALLEL APPLICATIONS WITH THE USE OF MPI.NET TECHNOLOGY
Albert Garaev
student, Department of Computer Systems, Kazan national research technical university Named after A.N. Tupolev - KAI,
Russia, Kazan
Ruslan Gibadullin
scientific advisor, PhD, associate professor at the Department of Computer Systems, Kazan national research technical university Named after A.N. Tupolev - KAI,
Russia, Kazan
АННОТАЦИЯ
В настоящее время параллельное программирование в высокопроизводительных вычислительных системах является актуальной и активно развивающейся областью информационных технологий. К таким системам относятся многоядерные процессоры, многопроцессорные ЭВМ с общей памятью, вычислительные кластеры с распределенной памятью, а также кластеры с гибридной архитектурой. В результате научно-технического прогресса появляются новые области знаний, которые повышают необходимость применения методов параллельных и распределенных вычислений. Поэтому сегодня параллельное программирование используется для самых различных целей. В данной работе рассматривается библиотека MPI.NET, которая предоставляет разработчикам единый механизм взаимодействия параллельных приложений независимо от архитектуры ЭВМ.
ABSTRACT
Currently, parallel programming in high-performance computing systems is a widespread area of information technology. Such systems include multi-core processors, multiprocessor computers with shared memory, computing clusters with distributed memory, as well as clusters with a hybrid architecture. Because of scientific and technological achievements, new areas of knowledge appear. It increases the need for the use of parallel and distributed computing methods. Therefore, today, parallel programming is used for a variety of purposes. In this paper, the MPI.NET library is described, which provides developers a single mechanism for the interaction of parallel applications regardless of the computer architecture.
Ключевые слова: параллельное программирование, MPI, MPI.NET, кластер.
Keywords: parallel programming, MPI, MPI.NET, cluster.
MPI.NET предоставляет поддержку всех языков .NET, в особенности C#. На данный момент является актуальной (последняя версия вышла в 2018 г.) и поддерживает все основные функции стандарта MPI и возможности работы с языком C#. Включает в себя некоторые дополнительные возможности (например, автоматическую сериализацию объектов), что значительно упрощает создание параллельных программ, работающих локально и на кластере. Для разработки программ с помощью MPI.NET требуется скачать и уcтановить пакет средств разработки MPI.NET. Для установки библиотеки требуется Visual Studio 2005 или новее, а также MS-MPI (реализация стандарта MPI от компании Microsoft. Для разработки программ с помощью MPI.NET не обязательно требуется кластер или сложная мультипроцессорная система, любой персональный ПК на операционной системе Windows позволит разрабатывать MPI-программы и запускать их локально для отладки и проверки правильности программы. Для добавления библиотечных функций MPI.NET необходимо установить библиотеку с помощью установщика Nuget и в свойствах проекта добавить ссылку на библиотеку.
Весь код MPI-программы должен содержаться внутри оператора Run, который гарантирует, что среда MPI будет завершена (через MPI.Communicator.Dispose) до выхода из программы.
Коммуникаторы MPI позволяют осуществлять связь между различными MPI-процессами. Каждый коммуникатор представляет собой отдельное коммуникационное пространство для некоторого набора MPI-процессов. Любой процесс в коммуникаторе может обмениваться сообщениями с другими процессами в коммуникаторе, не конфликтуя с процессами других коммуникаторов. Часто в MPI программах для решения разных задач могут использоваться несколько разных коммуникаторов.
Коммуникации точка-точка - это самая основная форма связи в MPI, которая позволяет программе отправлять сообщения от одного процесса другому через коммуникатор. Каждое сообщение идентифицируется процессом-отправителем и процессом-приемником (процессы идентифицируются по рангу в коммуникаторе), специальным «тегом», который идентифицирует тип сообщения, а также полезной нагрузкой, содержащей произвольные данные.
В MPI.NET существуют два типа отправки и передачи сообщений: блокирующие и неблокирующие. Блокирующие функции подразумевают, что процесс, вызвавший функцию обмена приостанавливается, пока функция не завершит свою работу. Неблокирующие подразумевают совмещение операций обмена и вычислений.
Коллективные коммуникации являются более структурированной альтернативой коммуникациям точка-точка. При коллективной связи все процессы в коммуникаторе взаимодействуют с одной операцией связи. Коллективные операции включают «барьеры»; коммуникации «один ко всем», «все к одному» и «все ко всем»; параллельные операции редукции, которые объединяют значения, предоставляемые каждым из процессов.
Хотя можно писать параллельные программы используя лишь операции точка-точка, коллективные операции имеют несколько преимуществ при написании параллельных программ:
- Читаемость и понятность кода
Чаще всего программы, в которых используются коллективные функции, проще в написании и анализе кода, чем эквивалентные программы, использующие коммуникации точка-точка. Коллективные функции лучше выражают цель коммуникации (например, функция Scatter четко распределяет данные из одного процесса во все другие процессы), и часто для выполнения задачи коллективных функций потребуется меньше, чем функций точка-точка (например, одна операция «все на все» вместо операций нескольких операций «точка-точка».
- Производительность
Реализации MPI обычно содержат оптимизированные алгоритмы для коллективных операций, в которых используются знания топологии сети и аппаратного обеспечения. Эти оптимизации трудно реализовать напрямую через коммуникации точка-точка без знаний, уже имеющихся в самой реализации MPI. Следовательно, использование коллективных операций может помочь повысить производительность параллельных программ и сделать более удобной переносимость программы для других кластеров с другими конфигурациями. По этим причинам, предпочтительнее использовать коллективные функции всегда, когда это возможно, а операции точка-точка использовать только в случаях, когда не существует подходящей коллективной функции.
Таким образом, библиотека MPI.NET является удобным инструментом, значительно упрощающим работу разработчика. Она поддерживает все основные функции и возможности стандарта MPI, такие как коммуникации точка-точка, коллективные коммуникации, а также содержит дополнительные возможности работы с языком C#.
Список литературы:
- Википедия. Свободная энциклопедия. Message Passing Interface. - [Электронный ресурс]. - URL - https://ru.wikipedia.org/wiki/Message_Passing_Interface. (дата обращения 18.05.2020)
- Антонов А.С. Параллельное программирование с использованием технологии MPI. – Издательство Московского университета, 2004. – 72 с.
дипломов
Оставить комментарий