Лабораторная работа №1
ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ В MPI.
ОСНОВНЫЕ КОММУНИКАЦИОННЫЕ ОПЕРАЦИИ
Цель работы: знакомство со стандартом MPI и изучение коммуникационных операций парного и коллективного обмена.
Лабораторный комплекс. В состав лабораторного комплекса входят аппаратные средства: ПЭВМ IBM PC, локальная сеть, а также программные средства: Windows 2000/ХР, Visual C++, MPICH for NT.
Программа работы
1) изучить возможности использования и параметры функций MPI;
2) написать программу для решения задачи согласно выбранному варианту.
Основные теоретические сведения
1. Краткая характеристика MPI
Система программирования MPI имеет следующие особенности:
• MPI − это библиотека. Она определяет имена, вызовы процедур и результаты их работы. Программы, которые пишутся на FORTRAN, C, и C++ компилируются обычными компиляторами и связаны с MPI-библиотекой.
• MPI − описание, а не реализация. Все поставщики параллельных компьютерных систем предлагают реализации MPI для своих машин как бесплатные, и они могут быть получены из Интернет. Правильная MPI-программа должна выполняться на всех реализациях без изменения.
|
|
• MPI соответствует модели многопроцессорной ЭВМ с передачей сообщений.
Процесс MPI - этопрограммная единица, у которой имеется собственное адресное пространство и одна или несколько нитей. Процессор − фрагмент аппаратных средств, способный к выполнению программы. Некоторые реализации MPI устанавливают, что в программе MPI всегда одному процессу соответствует один процессор; другие − позволяют размещать много процессов на каждом процессоре.
В модели передачи сообщений процессы, выполняющиеся параллельно, имеют раздельные адресные пространства. Связь происходит, когда часть адресного пространства одного процесса скопирована в адресное пространство другого процесса. Эта операция совместная и возможна только когда первый процесс выполняет операцию передачи сообщения, а второй процесс − операцию его получения.
Процессы в MPI принадлежат группам. Если группа содержит n процессов, то процессы нумеруются внутри группы номерами, которые являются целыми числами от 0 до n-l. Имеется начальная группа, которой принадлежат все процессы в реализации MPI.
Понятия контекста и группы объединены в едином объекте, называемом коммуникатором. Таким образом, отправитель или получатель, определенные в операции посылки или получения, всегда обращается к номеру процесса в группе, идентифицированной данным коммуникатором.
Если в кластере используются SMP-узлы (симметричная многопроцессорная система с множественными процессорами), то для организации вычислений возможны два варианта.
|
|
1. Для каждого процессора в SMP-узле порождается отдельный MPI-процесс. MPI-процессы внутри этого узла обмениваются сообщениями через разделяемую память (необходимо настроить MPICH соответствующим образом).
2. На каждой узле запускается только один MPI-процесс. Внутри каждого MPI-процесса производится распараллеливание в модели "общей памяти", например с помощью директив OpenMP.
Чем больше функций содержит библиотека MPI, тем больше возможностей представляется пользователю для написания эффективных программ. Однако для написания подавляющего числа программ принципиально достаточно следующих шести функций:
MPI_Init | Инициализация MPI |
MPI_Comm_size | Определение числа процессов |
MPI_Comm_rank | Определение процессом собственного номера |
MPI_Send | Посылка сообщения |
MPI_Recv | Получение сообщения |
MPI_Finalize | Завершение программы MPI |
В МPI базисной операцией посылки является операция: