|  | Class intercommunicatorBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
Class intercommunicatorboost::mpi::intercommunicator — Communication facilities among processes in different groups.  SynopsisDescriptionКласс<intercommunicator>обеспечивает средства связи между процессами из разных групп. Интеркоммуникатор всегда связан с двумя группами процессов: одна «локальная» группа процессов, содержащая процесс, который инициирует операцию MPI (например, отправитель в операции<send>), и одна «удаленная» группа процессов, содержащая процесс, который является целью операции MPI. В то время как интеркоммуникаторы имеют по существу те же операции «точка-точка», что и интракоммуникаторы (последние общаются только в пределах одной группы процессов), вся связь с интеркоммуникаторами происходит между процессами в локальной группе и процессами в удаленной группе; связь внутри группы должна использовать другой (внутри) коммуникатор. intercommunicatorpublic
       construct/copy/destruct
<intercommunicator(constMPI_Comm&comm,comm_create_kindkind);> Построй новый буст. MPI интеркоммуникатор на основе MPI интеркоммуникатор<comm>. <comm>может быть любым действительным MPI интеркоммуникатор. Если<comm>является MPI_COMM_NULL, создается пустой коммуникатор (который не может быть использован для связи), и параметр<kind>игнорируется. В противном случае,<kind>параметр определяет, как увеличить. MPI коммуникатор будет связан с<comm:> Если<kind><comm_duplicate>, дубликат<comm>для создания нового коммуникатора. Этот новый коммуникатор будет освобожден, когда буст. Уничтожается MPI-коммуникатор (и все его копии). Этот вариант допускается только в том случае, если базовая реализация MPI поддерживает MPI 2.0; в MPI 1.x дублирование межкоммуникаторов недоступно.Если<kind>является<comm_take_ownership>, возьмите на себя<comm>. Она будет освобождена автоматически, когда все усилится. Коммуникаторы MPI выходят за рамки.Если<kind>это<comm_attach>, то этот рост. MPI-коммуникатор будет ссылаться на существующий MPI-коммуникатор<comm>, но не будет освобождать<comm>при увеличении. MPI коммуникатор выходит за рамки. Эта опция должна использоваться только тогда, когда коммуникатором управляет пользователь.
<intercommunicator(constcommunicator&local,intlocal_leader,
                 constcommunicator&peer,intremote_leader);>Конструирует новый интеркоммуникатор, локальная группа которого<local>и удаленная группа которого<peer>. Затем интеркоммуникатор может использоваться для связи между процессами в двух группах. Этот конструктор эквивалентен вызову<MPI_Intercomm_create>. | Параметры: | 
 Интракоммуникатор, содержащий все процессы, которые будут идти в локальную группу. |  | <local_leader> | Ряд внутри<local>интракоммуникатора, который будет служить его лидером. |  | <peer> | Интракоммуникатор, содержащий все процессы, которые пойдут в удаленную группу. |  | <remote_leader> | В группе<peer>, которая будет его лидером. | 
 | 
intercommunicatorpublic member functions
<intlocal_size()const;> Возвращает размер локальной группы, т.е. количество локальных процессов, входящих в группу.<boost::mpi::grouplocal_group()const;> Возвращает локальную группу, содержащую все локальные процессы в этом интеркоммуникаторе.<intlocal_rank()const;> Возвращает ранг этого процесса внутри местной группы.<intremote_size()const;> Возвращает размер удаленной группы, т.е. число процессов, входящих в удаленную группу.<boost::mpi::groupremote_group()const;> Возвращает удаленную группу, содержащую все удаленные процессы в этом интеркоммуникаторе.<communicatormerge(boolhigh)const;> Объединение локальных и удаленных групп в этом интеркоммуникаторе в новый интракоммуникатор, содержащий объединение процессов в обеих группах. Этот способ эквивалентен<MPI_Intercomm_merge>. | Параметры: | <|
 high><high>| Должны ли процессы в этой группе иметь более высокий ранг, чем процессы в другой группе? Каждый из процессов в пределах определенной группы должен иметь одинаковое "высокое" значение. |  | 
 |