- •(Вопросы 34-40) содержание
- •5.2. Введение в разработку параллельных программ с использованием mpi
- •5.3. Операции передачи данных между двумя процессами
- •5.1. Mpi: основные понятия и определения
- •5.1.1. Понятие параллельной программы
- •5.1.2. Операции передачи данных
- •5.1.3. Понятие коммуникаторов
- •5.1.4. Типы данных
- •5.1.5. Виртуальные топологии
- •5.2. Введение в разработку параллельных программ с использованием mpi
- •5.2.1. Основы mpi
- •5.2.1.1. Инициализация и завершение mpi-программ
- •5.2.1.2. Определение количества и ранга процессов
- •5.2.1.3. Передача сообщений
- •5.2.1.4. Прием сообщений
- •5.2.1.5. Первая параллельная программа с использованием mpi
- •5.2.2. Определение времени выполнение mpi-программы
- •5.2.3. Начальное знакомство с коллективными операциями передачи данных
- •5.2.3.1. Передача данных от одного процесса всем процессам программы
- •5.2.3.2. Передача данных от всех процессов одному процессу. Операция редукции
- •5.2.3.3. Синхронизация вычислений
- •5.2.3.4. Аварийное завершение параллельной программы
- •5.3. Операции передачи данных между двумя процессами
- •5.3.1. Режимы передачи данных
- •5.3.2. Организация неблокирующих обменов данными между процессами
- •5.3.3. Одновременное выполнение передачи и приема
- •5.4. Коллективные операции передачи данных
- •5.4.1. Обобщенная передача данных от одного процесса всем процессам
- •5.4.2. Обобщенная передача данных от всех процессов одному процессу
- •5.4.3. Общая передача данных от всех процессов всем процессам
- •5.4.4. Дополнительные операции редукции данных
- •5.4.5. Сводный перечень коллективных операций данных
- •5.5. Производные типы данных в mpi
- •5.5.1. Понятие производного типа данных
- •5.5.2. Способы конструирования производных типов данных
- •5.5.2.1. Непрерывный способ конструирования
- •5.5.2.2. Векторный способ конструирования
- •5.5.2.3. Индексный способ конструирования
- •5.5.2.4. Структурный способ конструирования
- •5.5.3. Объявление производных типов и их удаление
- •5.5.4. Формирование сообщений при помощи упаковки и распаковки данных
- •5.6. Управление группами процессов и коммуникаторами
- •5.6.1. Управление группами
- •5.6.2. Управление коммуникаторами
- •5.7. Виртуальные топологии
- •5.7.1. Декартовы топологии (решетки)
- •5.7.2. Топологии графа
- •5.8. Дополнительные сведения о mpi
- •5.8.1. Разработка параллельных программ с использованием mpi на алгоритмическом языке Fortran
- •5.8.2. Общая характеристика среды выполнения mpi-программ
- •5.8.3. Дополнительные возможности стандарта mpi-2
- •5.9. Краткий обзор лекции
- •6. Параллельные методы умножения матрицы на вектор
- •6.1. Принципы распараллеливания
- •6.2. Постановка задачи
- •6.3. Последовательный алгоритм
- •6.4. Разделение данных
- •6.5. Умножение матрицы на вектор при разделении данных по строкам
- •6.5.1. Выделение информационных зависимостей
- •6.5.2. Масштабирование и распределение подзадач по процессорам
- •6.5.3. Анализ эффективности
- •6.5.4. Программная реализация
- •6.5.5. Результаты вычислительных экспериментов
- •6.6. Умножение матрицы на вектор при разделении данных по столбцам
- •6.6.1. Определение подзадач и выделение информационных зависимостей
- •6.6.2. Масштабирование и распределение подзадач по процессорам
- •6.6.3. Анализ эффективности
- •6.6.4. Результаты вычислительных экспериментов
- •6.7. Умножение матрицы на вектор при блочном разделении данных
- •6.7.1. Определение подзадач
- •6.7.2. Выделение информационных зависимостей
- •6.7.3. Масштабирование и распределение подзадач по процессорам
- •6.7.4. Анализ эффективности
- •6.7.5. Результаты вычислительных экспериментов
- •6.8. Краткий обзор лекции
5.1. Mpi: основные понятия и определения
5.1.1. Понятие параллельной программы
Под параллельной программойв рамкахMPIпонимается множество одновременно выполняемыхпроцессов.Процессымогут выполняться на разных процессорах, но на одном процессоре могут располагаться и несколькопроцессов(в этом случае их исполнение осуществляется в режиме разделения времени). В предельном случае для выполненияпараллельной программыможет использоваться один процессор – как правило, такой способ применяется для начальной проверки правильностипараллельной программы.
Каждый процесспараллельной программыпорождается на основе копии одного и того же программного кода (модель SPMP). Данный программный код, представленный в виде исполняемой программы, должен быть доступен в момент запускапараллельной программына всех используемых процессорах. Исходный программный код для исполняемой программы разрабатывается на алгоритмических языках C или Fortran с применением той или иной реализации библиотекиMPI.
Количество процессови число используемых процессоров определяется в момент запускапараллельной программысредствами среды исполненияMPI-программ и в ходе вычислений не может меняться без применения специальных, но редко задействуемых средств динамического порожденияпроцессови управления ими, появившихся в стандартеMPIверсии 2.0. Всепроцессыпрограммы последовательно перенумерованы от0доp-1, гдеpесть общее количествопроцессов. Номерпроцессаименуется рангомпроцесса.
5.1.2. Операции передачи данных
Основу MPIсоставляют операции передачи сообщений. Среди предусмотренных в составеMPIфункций различаютсяпарные(point-to-point) операции между двумяпроцессамииколлективные(collective) коммуникационные действия для одновременного взаимодействия несколькихпроцессов.
Для выполнения парных операций могут использоваться разные режимы передачи, среди которых синхронный, блокирующий и др. – полное рассмотрение возможныхрежимов передачибудет выполнено в подразделе 5.3.
Как уже отмечалось ранее, в стандарт MPIвключено большинство основных коллективных операций передачи данных – см. подразделы 5.2 и 5.4.
5.1.3. Понятие коммуникаторов
Процессыпараллельной программыобъединяются вгруппы. Другим важным понятиемMPI, описывающим наборпроцессов, является понятиекоммуникатора. Под коммуникатором вMPIпонимается специально создаваемый служебный объект, который объединяет в своем составе группупроцессови ряд дополнительных параметров (контекст), используемых при выполнении операций передачи данных.
Парные операции передачи данных выполняются только для процессов, принадлежащих одному и тому же коммуникатору. Коллективные операции применяются одновременно для всехпроцессоводного коммуникатора. Как результат, указание используемого коммуникатора является обязательным для операций передачи данных вMPI.
В ходе вычислений могут создаваться новые и удаляться существующие группы процессови коммуникаторы. Один и тот жепроцессможет принадлежать разным группам и коммуникаторам. Все имеющиеся впараллельной программепроцессывходят в состав конструируемого по умолчанию коммуникатора с идентификаторомMPI_COMM_WORLD.
В версии 2.0 стандарта появилась возможность создавать глобальные коммуникаторы (intercommunicator), объединяющие в одну структуру пару групп при необходимости выполнения коллективных операций междупроцессамииз разных групп.
Подробное рассмотрение возможностей MPIдля работы с группами и коммуникаторами будет выполнено в подразделе 5.6.
