- •(Вопросы 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.8.3. Дополнительные возможности стандарта mpi-2
Как уже отмечалось, стандарт MPI-2 был принят в 1997 г. Несмотря на достаточно большой период времени, прошедший с тех пор, использование данного варианта стандарта все еще ограничено. Среди основных причин такой ситуации можно назвать обычный консерватизм разработчиков программного обеспечения, сложность реализации нового стандарта и т.п. Важный момент состоит также в том, что возможностейMPI-1 достаточно для реализации многих параллельных алгоритмов, а сфера применимости дополнительных возможностейMPI-2 оказывается не столь широкой.
Для знакомства со стандартом MPI-2 может быть рекомендован информационный ресурсhttp://www.mpiforum.org, а также работа [[42]]. Здесь же дадим краткую характеристику дополнительных возможностей стандартаMPI-2:
динамическое порождение процессов, при котором процессы параллельной программы могут создаваться и уничтожаться в ходе выполнения;
одностороннее взаимодействие процессов, что позволяет быть инициатором операции передачи и приема данных только одному процессу;
параллельный ввод/вывод, обеспечивающий специальный интерфейс для работы процессов с файловой системой;
расширение возможностей коллективных операций, в числе которых, например, взаимодействие через глобальные коммуникаторы (intercommunicator);
интерфейс для алгоритмических языков C++ и Fortran 90.
5.9. Краткий обзор лекции
Данная лекция посвящена рассмотрению методов параллельного программирования для вычислительных систем с распределенной памятьюс использованиемMPI.
В самом начале лекции отмечается, что MPI–интерфейс передачи сообщений(message passing interface) – является в настоящий момент одним из основных подходов к разработкепараллельных программдля вычислительных систем сраспределенной памятью. ИспользованиеMPIпозволяет распределить вычислительную нагрузку и организовать информационное взаимодействие (передачу данных) между процессорами. Сам терминMPIозначает, с одной стороны, стандарт, которому должны удовлетворять средства организациипередачи сообщений, а с другой стороны, обозначает программные библиотеки, которые обеспечивают возможностьпередачи сообщенийи при этом соответствуют всем требованиям стандартаMPI.
В подразделе 5.1 рассматривается ряд понятий и определений, являющихся основополагающими для стандарта MPI. Так, дается представление опараллельной программе> как множестве одновременно выполняемыхпроцессов. При этомпроцессымогут выполняться на разных процессорах, но на одном процессоре могут располагаться и несколькопроцессов(в этом случае их исполнение осуществляется в режиме разделения времени). Далее приводится краткая характеристика понятий для операцийпередачи сообщений, типов данных, коммуникаторов ивиртуальных топологий.
В подразделе 5.2 проводится быстрое и простое введение в разработку параллельных программс использованиемMPI. Излагаемого в подразделе материала достаточно для начала разработкипараллельных программразного уровня сложности.
В подразделе 5.3 излагается материал, связанный с операциями передачи данных между двумя процессами. Здесь подробно характеризуются имеющиеся вMPIрежимы выполнения операций – стандартный, синхронный, буферизованный, по готовности. Для всех рассмотренных операций обсуждается возможность организации неблокирующих обменов данными междупроцессами.
В подразделе 5.4 рассматриваются коллективные операции передачи данных. Изложение материала соответствует последовательности изучения коммуникационных операций, использованной влекции 3. Основной вывод данного подраздела состоит в том, чтоMPIобеспечивает поддержку практически всех основных операций информационных обменов междупроцессами.
В подразделе 5.5 излагается материал, связанный с использованием в MPIпроизводных типов данных. В подразделе представлены все основные способы конструирования производных типов – непрерывный, векторный, индексный и структурный. Обсуждается также возможность явного формирования сложных сообщений при помощи упаковки и распаковки данных.
В подразделе 5.6 обсуждаются вопросы управления группами процессов и коммуникаторами. Рассматриваемые в подразделе возможностиMPIпозволяют управлять областями действия коллективных операций и исключить взаимовлияние разных выполняемых частейпараллельной программы.
В подразделе 5.7 рассматриваются возможности MPIпо использованиювиртуальных топологий. В подразделе представлены топологии, поддерживаемыеMPI, –прямоугольная решеткапроизвольной размерности (декартова топология) и топологияграфалюбого необходимого вида.
В подразделе 5.8 приводятся дополнительные сведения о MPI. В их числе обсуждаются вопросы разработкипараллельных программс использованиемMPIна алгоритмическом языкеFortran, дается краткая характеристика сред выполненияMPI-программ и приводится обзор дополнительных возможностей стандартаMPI-2.