
- •Федеральное агенство связи Поволжская государственная академия телекоммуникаций и информатики
- •Введение
- •Реализация и настройка кластера интерфейса mpi в среде ms Windows 9x/nt/xp
- •Рекомендуемая литература
- •Лабораторная работа № 1 Компиляция программ, использующих интерфейс mpi
- •Подготовка к работе
- •Контрольные вопросы
- •3. Задание
- •4. Методические указания
- •4. Листинг программы
- •5. Примечания
- •Лабораторная работа № 2 Использование функции групповой рассылки данных
- •Подготовка к работе
- •Контрольные вопросы
- •3. Задание
- •4. Методические указания
- •5. Примечания
- •Лабораторная работа № 3 Вычисление числа π
- •Подготовка к работе
- •Контрольные вопросы
- •Задание
- •4. Методические указания
- •5. Пример выполнения
- •6. Примечания
- •Лабораторная работа № 4 Передача данных отдельным процессам
- •Задание
- •Методические указания
- •Алгоритм
- •Пример выполнения
- •Лабораторная работа № 5 Матричные вычисления
- •Контрольные вопросы
- •Приложение а
- •Приложение в Краткий справочник функций mpi
- •Сообщения «точка-точка»
- •Групповые сообщения
- •Типы пересылаемых данных
- •Аргументы
Сообщения «точка-точка»
Функция |
Описание |
Аргументы |
MPI_Send(buffer,count,type,dest,tag,comm) |
Посылка сообщения с блокировкой |
Буфер, количество элементов в буфере, тип данных в буфере, получатель, идентификатор, коммуникатор |
MPI_Isend(buffer,count,type,dest,tag,comm,request) |
Посылка сообщения без блокировки (асинхронная посылка) |
->>-, возвр. Статус |
MPI_Ssend (*buf,count,datatype,dest,tag,comm,ierr) |
Посылка сообщения с синхронизацией |
|
MPI_Bsend (*buf,count,datatype,dest,tag,comm) |
Посылка сообщения с буферизацией данных |
->>- |
MPI_Recv(buffer,count,type,source,tag,comm,status) |
Получение сообщения с блокировкой |
->>- |
MPI_Irecv(buffer,count,type,source,tag,comm,request) |
Получение сообщения без блокировки (асинхронное получение) |
->>- |
MPI_Rsend (*buf,count,datatype,dest,tag,comm) |
Отправление по готовности. |
->>- |
MPI_Buffer_attach (*buffer,size) |
Установка буфера для асинхронных и буферных пересылок |
Буфер, размер буфера |
MPI_Buffer_detach (*buffer,size) |
Освобождения буфера для асинхронных и буферных пересылок |
-->>-- |
MPI_Sendrecv (*sendbuf,sendcount,sendtype,dest,sendtag, *recvbuf, recvcount, recvtype, source, recvtag, comm,*status) |
Комбинированный вариант. Одновременная отсылка и получение информации. |
Буфер отправляемой информации, количество отпр. Информации, тип отпр. Инф., получатель, таг отправителя, то же самое для получения. |
MPI_Probe (source,tag,comm,*status) |
Проверка на блокировки. Возвращает состяние блокировок. |
Получатель, таг, коммуникатор, статус |
Групповые сообщения
Функция |
Описание |
Аргументы |
MPI_Barrier (comm) |
Приостановка программы до окончания всех групповых обменов данными. |
Коммуникатор |
MPI_Bcast (*buffer,count,datatype,root,comm) |
Групповая рассылка данных. Данные в буфере рассылаются все остальным процессам в коммуникаторе |
Буфер, количество элементов в буфере, тип данных в буфере, процесс-отправитель, коммуникатор |
MPI_Scatter (*sendbuf,sendcnt,sendtype,*recvbuf, ...... recvcnt,recvtype,root,comm) |
Рассылает еденичные сообщения для каждого процесса из буфера |
Буфер, количество элементов в буфере, тип данных в буфере, тоже для получателя, процесс отправитель, коммуникатор. |
MPI_Gather (*sendbuf,sendcnt,sendtype,*recvbuf, ...... recvcount,recvtype,root,comm) |
Собирает еденичные сообщения от процессов в буфер. |
Буфер, количество элементов в буфере, тип данных в буфере, тоже для получателя, процесс отправитель, коммуникатор. |
MPI_Reduce (*sendbuf,*recvbuf,count,datatype,op,root,comm) |
Выполняет групповую операцию над буфером в каждой переменной |
Буфер, количество элементов в буфере, тип данных в буфере, операция, процесс отправитель, коммуникатор. |
MPI_Allreduce (*sendbuf,*recvbuf,count,datatype,op,comm) |
Выполняет групповую операцию над буфером и рассылает результаты всем процессам |
Буфер, количество элементов в буфере, тип данных в буфере, операция, процесс отправитель, коммуникатор. |