Лого cs.karelia.ru Кафедра ИМО
Курсовая работа
Введение
Общие процедуры MPI
Передача сообщений
Прием сообщений
Пример
Источники

Valid HTML 4.01!


Введение.

MPI (Message Passing Interface), является стандартизированной и переносимой системой параллельного программирования с передачей сообщений, для функционирования на широком многообразии параллельных компьютеров. Стандарт определяет синтаксис и семантику библиотечных функций, полезных для широкого круга пользователей, пишущих переносимые программы передачи сообщений в Fortran77 или C.

MPI является на данный момент самой развитой системой параллельного программирования с передачей сообщений. MPI позволяет создавать эффективные и надежные, переносимые параллельные программы высокого уровня. Эффективность и надежность обеспечиваются такими механизмами как: определение MPI операций не процедурно, а логически, т.е. внутренние механизмы выполнения операций скрыты от пользователя; использование непрозрачных объектов в MPI (группы, коммуникаторы, типы и т.д.);хорошей реализацией функций передачи данных, адаптирующихся к структуре системы и обеспечивающих необходимую буферизацию данных. Переносимость обеспечивается такими механизмами, как: определение одного вычислительного компьютера в виде виртуального компьютера и возможность задания произвольного количества таких виртуальных компьютеров в системе не зависимо от количества физических компьютеров (зависимость только от объема оперативной памяти в системе); компиляторы для соответствующих языков на компьютерах вычислительной системы. Уровень языка параллельного программирования определяется языковыми конструкциями, с помощью которых создаются параллельные программы. Чтобы более четко представить себе этот уровень нужно ответить на вопрос: - В чем одно из важных отличий в написании последовательной и параллельной программ? Здесь имеется ввиду параллельная программа для рассматриваемых MIMD систем. Прежде чем создавать параллельную программу, необходимо знать общую архитектуру (виртуальной) параллельной машины и топологию (виртуальных) межпроцессорных связей, которая существенно используется при программировании. Это связано с тем, что невозможно создание автоматического распараллеливателя, который позволял бы превращать последовательную программу в параллельную, и обеспечивал бы ее высокую производительность. Поэтому в программе приходится в явном виде задавать операторы инициации виртуальных топологий и операторы обменов данными между (виртуальными) процессорами. При написании же последовательной программы знать архитектуру процессора, на котором будет исполняться программа, зачастую нет необходимости, поскольку учет особенностей архитектуры скалярного процессора может быть сделан компилятором с приемлемыми потерями в производительности программы. Поэтому языковый уровень параллельной программы является заведомо ниже уровня последовательной программы, т.к. пользователю нужно в явном виде увязывать структуру алгоритма своей задачи со структурой вычислительной системы. Таким образом языковый уровень рассматривается в рамках уровней параллельных конструкций, для создания параллельных программ. Для решения своей задачи, пользователь с помощью команды (в командной строке): mpirun […] -np N, задает вычислительную систему из N виртуальных компьютеров, соединенных между собой виртуальными каналами с топологией связи - "полный граф". В дополнение к этому, наличие операторов парных взаимодействий между процессорами в такой среде, достаточно для реализации всего спектра используемых в программах схем системных взаимодействий. Но отображение структуры задачи на архитектуру системы с помощью таких операторов требует некоторых усилий при программировании. Параллельная программа в этом случае будет громоздкой, плохо отлаживаемой, с неэффективным отображением структуры алгоритма на структуру системы. Наличие в системе таких средств как: виртуальные топологии, коллективные взаимодействия, создаваемые пользователем типы данных и др., значительно повышают уровень параллельного программирования. Виртуальные топологии обеспечивают оптимальное приближение архитектуры системы к структурам задач при хорошей переносимости задач.

MPI стандарт предназначен для использования всеми теми, кто испытывает необходимость писать переносимые параллельные программы с передачей сообщений в Fortran77 и C. Этот круг пользователей включает в себя индивидуальных прикладных программистов, разработчиков программного обеспечения, для выполнения на параллельных машинах, создателей окружающих сред и инструментальных средств.