ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
72
Ее выходной параметр size — количество процессов в области взаимодейст-
вия, связанной с коммуникатором comm.
Интеркоммуникаторы можно использовать в операциях, которые обычно
применяются к интракоммуникаторам. При этом MPI_Comm_size возвращает раз-
мер локальной группы, MPI_Comm_group — локальную группу и MPI Comm_rank
возвращает ранг в локальной группе. В подпрограмме MPI_Comm_compare оба
коммуникатора должны быть одного типа, иначе результатом будет значение
MPI_UNEQUAL.
Операции обмена между группами процессов (интеробмен)
При выполнении интеробмена процессу-источнику сообщения указывается
ранг адресата относительно удаленной группы, а процессу-получателю — ранг ис-
точника (также относительно удаленной по отношению к получателю группы).
Обмен выполняется между лидерами обеих групп. Предполагается, что в обеих
группах есть, по крайней мере, по одному процессу, который может обмениваться
сообщениями со своим партнером.
Интеробмен возможен только, если создан соответствующий интеркоммуни-
катор, а это можно сделать с помощью подпрограммы MPI_Intercomm_create:
int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader,
MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm
*new_intercomm)
MPI_INTERCOMM_CREATE (LOCAL_COMM, LOCAL_LEADER, PEER_COMM, RE-
MOTE_LEADER, TAG, NEW_INTERCOMM, IERR)
Входные параметры этой подпрограммы:
local_comm — локальный интракоммуникатор;
local_leader — ранг лидера в локальном коммуникаторе (обычно 0);
peer_comm — удаленный коммуникатор;
remote_leader — ранг лидера в удаленном коммуникаторе (обычно 0);
tag — тег интеркоммуникатора, используемый лидерами обеих групп для
обменов в контексте родительского коммуникатора.
Выходной параметр — интеркоммуникатор (new_intercomm). "Джокеры" в ка-
честве параметров использовать нельзя. Вызов этой подпрограммы должен выпол-
няться в обеих группах процессов, которые должны быть связаны между собой. При
этом в каждом из этих вызовов используется локальный интракоммуникатор, соот-
ветствующий данной группе процессов. При работе с MPI_Intercomm_create
локальная и удаленная группы процессов не должны пересекаться, иначе
возможны "тупики".
1...,64,65,66,67,68,69,70,71,72,73 75,76,77,78,79,80,81,82,83,84,...180