Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PODs 2.0 release Marina_Lesha version beta3 vir...doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.02 Mб
Скачать

Mpi. Терминология и обозначения группы, коммуникаторы.

int MPI_Comm_split( MPI_Comm comm, int color, int key, MPI_Comm *newcomm)

comm - идентификатор группы

color - признак разделения на группы

key - параметр, определяющий нумерацию в новых группах

OUT newcomm - идентификатор новой группы

Данная процедура разбивает все множество процессов, входящих в группу comm, на

непересекающиеся подгруппы - одну подгруппу на каждое значение параметра color

(неотрицательное число). Каждая новая подгруппа содержит все процессы одного цвета.

Если в качестве color указано значение MPI_UNDEFINED, то в newcomm будет

возвращено значение MPI_COMM_NULL.

int MPI_Comm_free( MPI_Comm comm)

OUT comm - идентификатор коммуникатора

Уничтожает группу, ассоциированную с идентификатором comm, который после

Возвращения устанавливается в mpi_comm_null.

MPI - message passing interface - библиотека функций, предназначенная для поддержки работы параллельных процессов в терминах передачи сообщений.

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

Атрибуты сообщения - номер процесса-отправителя, номер процесса-получателя и идентификатор сообщения. Для них заведена структура MPI_Status, содержащая три поля: MPI_Source (номер процесса отправителя), MPI_Tag (идентификатор сообщения), MPI_Error (код ошибки); могут быть и добавочные поля.

Идентификатор сообщения (msgtag) - атрибут сообщения, являющийся целым неотрицательным числом, лежащим в диапазоне от 0 до 32767. Процессы объединяются в группы, могут быть вложенные группы. Внутри группы все процессы перенумерованы. С каждой группой ассоциирован свой коммуникатор. Поэтому при осуществлении пересылки необходимо указать идентификатор группы, внутри которой производится эта пересылка. Все процессы содержатся в группе с предопределенным идентификатором MPI_COMM_WORLD.

Дальнейшее развитие интерфейса. Стандарт MPI-2

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

А для пользователей этот вопрос не столь очевиден, как кажется. С одной стороны, в новом стандарте отражены, казалось бы, только разумные конст­рукции, необходимые на практике. Возьмем, например, параллельный ввод/вывод. Для большого класса задач операции подобного типа всегда бы­ли узким местом и адекватные средства просто необходимы. Но, с другой стороны, пользователям не дается никаких гарантий, что такие конструкции будут эффективно реализованы. Будут ли они тратить свои силы для оче­редного переписывания программ в новых терминах? Далеко не факт...

Мы не будем столь же детально описывать функции нового стандарта. От­метим лишь основные изменения, сделанные в MPI-2 по сравнению с пре­дыдущими версиями.

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

Одностороннее взаимодействие процессов. Обмен сообщениями по традици­онной схеме send/Receive не всегда является удобным. Иногда активной стороной вполне может быть только один процесс. Если он знает, какому процессу нужно передать данные и где их разместить, то зачем требовать активности получателя? Аналогично и в случае приема сообщений. Практи­ка показала, что схема Put /Get для многих приложений является более при­емлемой, что и послужило поводом для ее включения в MPI-2. Следует учесть, что схема Put /Get особенно актуальна на компьютерах с общей па­мятью, которые активно появляются в последнее время.

Параллельный ввод/вывод. MPI-2 предоставляет специальный интерфейс для работы процессов с файловой системой.

Расширенные коллективные операции. Во многие коллективные операции до­бавлена возможность взаимодействия между процессами, входящими в раз­ные коммуникаторы. Например, в стандартной операции рассылки сообще­ния MPi_Bcast рассылающий процесс может взаимодействовать с процессами другого коммуникатора. Другой пример расширения: многие коллективные операции внутри коммуникатора в MPI-2 могут выполняться в режиме in_piace, при котором входные и выходные буфера совпадают.

Интерфейс для C++. Представленные в MPI-1 интерфейсы для языков Fortran и С расширены интерфейсом для C++.