47
для представления символов более одного байта. С другой стороны,
байт имеет то же самое двоичное значение на всех машинах.
3.2.3. Атрибуты сообщения
В дополнение к описанию данных сообщение несет информацию,
которая используется, чтобы различать и выбирать сообщения. Эта
информация состоит из фиксированного количества полей, которые в
совокупности называются
атрибутами сообщения. Эти поля таковы:
source, destination, tag, communicator (номер процесса-отправителя
сообщения, номер процесса-получателя, тэг, коммуникатор).
Целочисленный аргумент тэг используется, чтобы различать типы
сообщений. Диапазон значений тэга находится в пределах 0,…,UB,
где верхнее значение UB зависит от реализации. MPI требует, чтобы
UB было не менее 32767.
Аргумент comm описывает коммуникатор, который используется
в операции обмена. Коммуникатор описывает коммуникационный
контекст коммуникационной операции. Сообщение всегда принима-
ется внутри контекста, в котором оно было послано; сообщения, по-
сланные в различных контекстах, не взаимодействуют.
Коммуникатор также описывает ряд процессов, которые разделя-
ют этот коммуникационный контекст. Эта группа процессов упоря-
дочена, и процессы определяются их номером внутри этой группы:
диапазон значений для
dest есть 0,...,n-1, где n есть число процессов в
группе
В MPI предопределен коммуникатор MPI_COMM_WORLD. Он
разрешает обмен для всех процессов, которые доступны после ини-
циализации MPI, и процессы идентифицируются их номерами в груп-
пе
MPI_COMM_WORLD.
3.2.4. Блокирующий прием
MPI_RECV (buf, count, datatype, source, tag, comm, status)
OUT buf начальный адрес буфера процесса-получателя (альтернатива)
IN count число элементов в принимаемом сообщении (целое)
IN datatype тип данных каждого элемента сообщения (дескриптор)
IN source номер процесса-отправителя (целое)
IN tag тэг сообщения (целое)
IN comm коммуникатор (дескриптор)
OUT status параметры принятого сообщения (статус)
int MPI_Recv (void* buf, int count, MPI_Datatype datatype, int source, int tag,
MPI_Comm comm, MPI_Status *status)