ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
57
Другие предопределенные типы
MPI_Status
- структура; атрибутысообщений; содержит три обязательных поля:
MPI_Source
(номер процесса отправителя);
MPI_Tag
(идентификатор сообщения);
MPI_Error
(код ошибки).
MPI_Comm
- системный тип; идентификатор группы (коммуникатора);
MPI_COMM_WORLD
- зарезервированный идентификатор группы, со-
стоящей их всех процессов приложения
Коллективы ветвей
В MPI хорошо продумано объединение ветвей в коллективы. В сущности,
такое деление служит той же цели, что и введение идентификаторов для сообщений:
помогает надежнее отличать сообщения друг от друга. В большинстве функций MPI
имеется параметр типа "коммуникатор", который можно рассматривать как деск-
риптор (номер) коллектива. Он ограничивает область действия данной функции со-
ответствующим коллективом. Коммуникатор коллектива, который включает в себя
все ветви приложения, создается автоматически при старте и называется
MPI_COMM_WORLD
.
Идентификаторы программист назначает сообщениям вручную, и существует
вероятность, что вследствие его ошибки два разных сообщения получат одинаковые
идентификаторы. Коллективы создаются функциями самого MPI, так, чтобы гаран-
тированно избежать случайных совпадений.
В качестве идентификатора ожидаемого сообщения функции приема может
быть передан т.н. "джокер" - принять первое пришедшее сообщение независимо
от его идентификатора и/или отправителя. Такой вызов может по ошибке перехва-
тывать и те сообщения, которые должны быть приняты и обработаны в другом мес-
те ветви. Для коммуникаторов "джокера" не существует, поэтому работа разных
функций через разные коммуникаторы гарантированно предохраняет их от взаим-
ных краж информации: коммуникаторы являются несообщающимися сосудами.
Коммуникаторы, помимо собственного номера и состава входящих в них вет-
вей, хранят и другие данные. Например, кроме обязательной линейной нумерации,
ветвям коллектива может быть дополнительно назначена нумерация картезианская
или в виде произвольного графа - это может оказаться удобным для решения неко-
торых классов задач. Коллективу может быть назначена функция-обработчик оши-
бок взамен назначаемой по умолчанию. Пользуясь механизмом "атрибутов", для
коллектива пользователь может завести набор совместно используемых его ветвями
данных.
1...,49,50,51,52,53,54,55,56,57,58 60,61,62,63,64,65,66,67,68,69,...180