Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers.docx
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
523 Кб
Скачать
☆
      1. Соглашения о терминах

Параллельное приложение состоит из нескольких процессов (ветвей, потоков, задач), выполняющихся одновременно. Разные процессы могут выполняться как на разных процессорах, так и на одном и том же – для программы это роли не играет, поскольку в обоих случаях механизм обмена данными одинаков. С каждым потоком связывается номер процесса - целое неотрицательное число, являющееся уникальным атрибутом процесса.

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

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

Для совместного проведения тех или иных расчетов процессы внутри приложения объединяются в группы. Группы могут быть вложенными. Внутри группы все процессы пронумерованы. Каждый процесс может узнать у библиотеки связи свой номер внутри группы и в зависимости от номера выполнить соответствующую часть расчетов. С каждой группой ассоциирован свой коммуникатор. Поэтому при осуществлении пересылки необходимо указать идентификатор группы, внутри которой производится эта пересылка. Все процессы содержатся в группе с предопределенным идентификатором MPI_COMM_WORLD.

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

      1. Принятая в mpi нотация записи

Регистр букв: важен в С, не играет роли в FORTRAN.

Все идентификаторы начинаются с префикса MPI_. Не рекомендуется заводить пользовательские идентификаторы, начинающиеся с этой приставки, а также с приставок MPID_, MPIR_ и PMPI_, которые используются в служебных целях.

Если идентификатор сконструирован из нескольких слов, слова в нем, как правило, разделяются подчерками: MPI_Get_count, MPI_Comm_rank. Иногда разделитель не используется: MPI_Sendrecv, MPI_Alltoall.

Порядок слов в составном идентификаторе выбирается по принципу "от общего к частному": сначала префикс MPI_, потом название категории (Type, Comm, Group, Attr, Errhandler и т.д.), потом название операции (MPI_Errhandler_create, MPI_Errhandler_set, ...). Наиболее часто употребляемые функции выпадают из этой схемы: они имеют короткие и стереотипные названия, например MPI_Barrier, или MPI_Unpack.

Имена констант (и неизменяемых пользователем переменных) записываются полностью заглавными буквами: MPI_COMM_WORLD, MPI_FLOAT. В именах функций первая за префиксом буква - заглавная, остальные маленькие: MPI_Send, MPI_Comm_size.

Определение всех именованных констант, прототипов функций и определение типов выполняется в языке Си подключением файла mpi.h, а в Фортране – mpif.h.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]