Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Антонов А.С. -> "Введение в параллельные вычисления" -> 19

Введение в параллельные вычисления - Антонов А.С.

Антонов А.С. Введение в параллельные вычисления — Москва, 2002. — 69 c.
Скачать (прямая ссылка): vvedenievparalelnievichisleniya2002.pdf
Предыдущая << 1 .. 13 14 15 16 17 18 < 19 > 20 21 22 23 24 25 .. 28 >> Следующая


? comm — идентификатор коммуникатора;

? out request — идентификатор асинхронного приема.

Формирование запроса на выполнение приема сообщения. Все параметры точно такие же, как и у функции MPi_irecv, однако в отличие от нее реальный прием не начинается до вызова функции MPi_startall.

MPI_Startall(int count, MPI_Request *requests)

? count — число запросов на взаимодействие;

? out requests — массив идентификаторов приема/передачи

Запуск всех отложенных операций передачи и приема, ассоциированных с элементами массива запросов requests и инициированных функциями MPi_Recv_init, MPi_Send_init или ее тремя модификациями. Все отложенные взаимодействия запускаются в режиме без блокировки, а их завершение можно определить обычным образом с помощью функций семейств MPI_Wait и MPI_Test.

Совмещенные прием и передача сообщений. Совмещение приема и передачи сообщений между процессами позволяет легко обходить множество подводных камней, связанных с возможными тупиковыми ситуациями. Предположим, что в линейке процессов необходимо организовать обмен данными между i-м и (i+1) -ым процессами. Если воспользоваться стандартными блокирующими функциями посылки сообщений, то возможен тупик, обсуждавшийся ранее.

45 Один из способов обхода такой ситуации состоит в использовании функции совмещенного приема и передачи.

int MPI_Sendrecv( void *sbuf, int scount, MPI_Datatype stype, int dest, int stag, void *rbuf, int rcount, MPI_Datatype rtype, int source, MPI_Datatype rtag, MPI_Comm comm, MPI_Status *status)

? sbuf — адрес начала буфера с посылаемым сообщением;

? scount — число передаваемых элементов в сообщении;

? stype — тип передаваемых элементов;

? dest — номер процесса-получателя;

? stag — идентификатор посылаемого сообщения;

? out rbuf — адрес начала буфера приема сообщения;

? rcount — число принимаемых элементов сообщения;

? rtype — тип принимаемых элементов;

? source — номер процесса-отправителя;

? rtag — идентификатор принимаемого сообщения;

? comm — идентификатор коммуникатора;

? out status — параметры принятого сообщения.

Данная операция объединяет в едином запросе посылку и прием сообщений. Естественно, что реализация этой функции гарантирует отсутствие тупиков, которые могли бы возникнуть между процессами при использовании обычных блокирующих операций MPI_Send и MPI_Recv. Принимающий и отправляющий процессы могут являться одним и тем же процессом. Буфера приема и посылки обязательно должны быть различными. Сообщение, отправленное операцией MPI_Sendrecv, может быть принято обычным образом, и точно также операция MPI_Sendrecv может принять сообщение, отправленное обычной операцией MPI Send.

5. Задания:

? Начните создавать параллельный вариант программы, реализующей метод Гаусса решения систем линейных алгебраических уравнений, используя изученные функции MPI.

? Пинг-понг. Смоделировать последовательный обмен сообщениями между двумя процессами, замерить время на одну итерацию обмена, определить зависимость времени от длины сообщения.

? Сравнить эффективность реализации различных видов пересылок данных между двумя выделенными процессорами.

? Можно ли в процессе работы MPI-программы порождать новые процессы, если освободились свободные процессоры?

46 ? Могут ли различные процессы MPI-программы записывать одновременно: а) на один и тот же диск? б) в один и тот же файл?

? Может ли MPI-программа продолжать работу после аварийного завершения одного из процессов?

? Могут ли группы процессов иметь непустое пересечение, не совпадающее ни с одной из них полностью?

? Можно ли сообщение, отправленное с помощью блокирующей операции посылки, принять неблокирующей операцией приема?

? Что гарантирует блокировка при отправке/приеме сообщений?

? Как принять любое сообщение от любого процесса?

Занятие 5. Технология MPI (продолжение)

1. Коллективные взаимодействия процессов

В операциях коллективного взаимодействия процессов участвуют все процессы коммуникатора. Соответствующая процедура должна быть вызвана каждым процессом, быть может, со своим набором параметров. Возврат из процедуры коллективного взаимодействия может произойти в тот момент, когда участие процесса в данной операции уже закончено. Как и для блокирующих процедур, возврат означает то, что разрешен свободный доступ к буферу приема или посылки. Асинхронных коллективных операций в MPI нет.

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

Вообще говоря, нельзя рассчитывать на синхронизацию процессов с помощью коллективных операций. Если какой-то процесс уже завершил свое участие в коллективной операции, то это не означает ни того, что данная операция завершена другими процессами коммуникатора, ни даже того, что она ими начата (конечно же, если это возможно по смыслу операции).
Предыдущая << 1 .. 13 14 15 16 17 18 < 19 > 20 21 22 23 24 25 .. 28 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.