Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.

Презентация:



Advertisements
Похожие презентации
Введение в параллельные вычисления. Технология программирования MPI (день четвертый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Advertisements

Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 7 Томский политехнический университет.
Лекция 6 Множественное распараллеливание на Linux кластере с помощью библиотеки MPI 1. Компиляция и запуск программы на кластере. 2. SIMD модель параллельного.
Кафедра ЮНЕСКО по НИТ1 Коммуникационные операции «точка-точка» параллельное программирование.
Технология программирования MPI Антонов Александр Сергеевич, к.ф.-м.н., с.н.с. лаборатории Параллельных информационных технологий НИВЦ МГУ.
Основы параллельного программирования с использованием MPI Лекция 4 Немнюгин Сергей Андреевич Санкт-Петербургский государственный университет физический.
Введение в параллельные вычисления. Технология программирования MPI (день седьмой) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Введение в параллельные вычисления. Технология программирования MPI (день пятый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Интерфейс передачи сообщений: MPI. Базовые архитектуры Массивно-параллельные системы (MPP) Симметричные мультипроцессорные системы (SMP) Системы с неоднородным.
Введение в параллельные вычисления. Технология программирования MPI (день шестой) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Кафедра ЮНЕСКО по НИТ1 Передача упакованных данных Параллельное программирование.
Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 4 Томский политехнический университет.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 4 Методы разработки параллельных программ при использования интерфейса передачи.
Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 8 Томский политехнический университет.
Кафедра ЮНЕСКО по НИТ1 Коллективные коммуникационные операции параллельное программирование.
Кафедра ЮНЕСКО по НИТ1 Создание групп и коммуникаторов Параллельное программирование.
Параллельные аппаратные архитектуры и модели программирования Традиционная архитектура фон Неймана Расширение традиционной архитектуры Сопроцессоры Многоядерные.
Основы параллельного программирования с использованием MPI Лекция 5 Немнюгин Сергей Андреевич Санкт-Петербургский государственный университет физический.
Реализация параллельного алгоритма с использованием MPI.
Транксрипт:

Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных информационных технологий НИВЦ МГУ

MPI MPI_ISEND(BUF, COUNT, DATATYPE, DEST, MSGTAG, COMM, REQUEST, IERR) BUF(*) INTEGER COUNT, DATATYPE, DEST, MSGTAG, COMM, REQUEST, IERR Неблокирующая посылка сообщения. Возврат из функции происходит сразу после инициализации передачи. Переменная REQUEST идентифицирует пересылку.

MPI Модификации функции MPI_ISEND: MPI_IBSEND передача сообщения с буферизацией. MPI_ISSEND передача сообщения с синхронизацией. MPI_IRSEND передача сообщения по готовности.

MPI MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, MSGTAG, COMM, REQUEST, IERR) BUF(*) INTEGER COUNT, DATATYPE, SOURCE, MSGTAG, COMM, REQUEST, IERR Неблокирующий прием сообщения. Возврат из функции происходит сразу после инициализации передачи. Переменная REQUEST идентифицирует пересылку.

MPI Сообщение, отправленное любой из функций MPI_SEND, MPI_ISEND и любой из трех их модификаций, может быть принято любой из процедур MPI_RECV и MPI_IRECV. До завершения неблокирующей операции не следует записывать в используемый массив данных!

MPI MPI_IPROBE(SOURCE, MSGTAG, COMM, FLAG, STATUS, IERR) LOGICAL FLAG INTEGER SOURCE, MSGTAG, COMM, IERR, STATUS(MPI_STATUS_SIZE) Получение информации о структуре ожидаемого сообщения без блокировк и. FLAG возвращает значение.TRUE., если сообщение с подходящими атрибутами уже может быть принято.

MPI MPI_WAIT(REQUEST, STATUS, IERR) INTEGER REQUEST, IERR, STATUS(MPI_STATUS_SIZE) Ожидание завершения асинхронной операции, ассоциированной с идентификатором REQUEST. Для неблокирующего приема определ яется параметр STATUS. REQUEST устанавливается в значение MPI_REQUEST_NULL.

MPI MPI_WAITALL(COUNT, REQUESTS, STATUSES, IERR) INTEGER COUNT, REQUESTS(*), STATUSES(MPI_STATUS_SIZE,*), IERR Ожидание завершения COUNT асинхронн ых операци й, ассоциированн ых с идентификатор ами REQUESTS. Для неблокирующих приемов определ яются параметры в массиве STATUSES.

MPI prev = rank - 1 next = rank + 1 if (rank.eq. 0) prev = numtasks - 1 if (rank.eq. numtasks - 1) next = 0 call MPI_IRECV(buf(1), 1, MPI_INTEGER, & prev, tag1, MPI_COMM_WORLD, reqs(1), & ierr) call MPI_IRECV(buf(2), 1, MPI_INTEGER, & next, tag2, MPI_COMM_WORLD, reqs(2), & ierr)

MPI call MPI_ISEND(rank, 1, MPI_INTEGER, & prev, tag2, MPI_COMM_WORLD, reqs(3), & ierr) call MPI_ISEND(rank, 1, MPI_INTEGER, & next, tag1, MPI_COMM_WORLD, reqs(4), & ierr) call MPI_WAITALL(4, reqs, stats, ierr);

MPI MPI_WAITANY(COUNT, REQUESTS, INDEX, STATUS, IERR) INTEGER COUNT, REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), IERR Ожидание завершения одной из COUNT асинхронн ых операци й, ассоциированн ых с идентификатор ами REQUESTS. Для неблокирующего приема определ яется параметр STATUS.

MPI Если к моменту вызова завершились несколько из ожидаемых операций, то случайным образом будет выбрана одна из них. Параметр INDEX содержит номер элемента в массиве REQUESTS, содержащего идентификатор завершенной операции.

MPI MPI_WAITSOME(INCOUNT, REQUESTS, OUTCOUNT, INDEXES, STATUSES, IERR) INTEGER INCOUNT, REQUESTS(*), OUTCOUNT, INDEXES(*), IERR, STATUSES(MPI_STATUS_SIZE,*) Ожидание завершения хотя бы одной из INCOUNT асинхронн ых операци й, ассоциированн ых с идентификатор ами REQUESTS.

MPI Параметр OUTCOUNT содержит число завершенных операций, а первые OUTCOUNT элементов массива INDEXES содержат номера элементов массива REQUESTS с их идентификаторами. Первые OUTCOUNT элементов массива STATUSES содержат параметры завершенных операций (для неблокирующих приемов).

MPI MPI_TEST(REQUEST, FLAG, STATUS, IERR) LOGICAL FLAG INTEGER REQUEST, IERR, STATUS(MPI_STATUS_SIZE) Проверка завершен ности асинхронной операции, ассоциированной с идентификатором REQUEST. В параметре FLAG возвращает ся значение.TRUE., если операция завершена.

MPI MPI_TESTALL(COUNT, REQUESTS, FLAG, STATUSES, IERR) LOGICAL FLAG INTEGER COUNT, REQUESTS(*), STATUSES(MPI_STATUS_SIZE,*), IERR Проверка завершен ности COUNT асинхронн ых операци й, ассоциированн ых с идентификатор ами REQUESTS.

MPI MPI_TESTANY(COUNT, REQUESTS, INDEX, FLAG, STATUS, IERR) LOGICAL FLAG INTEGER COUNT, REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), IERR В параметре FLAG возвращает ся значение.TRUE., если хотя бы одна из операций асинхронного обмена завершена.

MPI MPI_TESTSOME(INCOUNT, REQUESTS, OUTCOUNT, INDEXES, STATUSES, IERR) INTEGER INCOUNT, REQUESTS(*), OUTCOUNT, INDEXES(*), IERR, STATUSES(MPI_STATUS_SIZE,*) Аналог MPI_WAITSOME, но возврат происходит немедленно. Если ни одна из операций не завершилась, то значение OUTCOUNT будет равно нулю.