|
Class intercommunicatorBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
Class intercommunicator
boost::mpi::intercommunicator — Communication facilities among processes in different groups.
SynopsisDescriptionКласс<intercommunicator >обеспечивает средства связи между процессами из разных групп. Интеркоммуникатор всегда связан с двумя группами процессов: одна «локальная» группа процессов, содержащая процесс, который инициирует операцию MPI (например, отправитель в операции<send >), и одна «удаленная» группа процессов, содержащая процесс, который является целью операции MPI. В то время как интеркоммуникаторы имеют по существу те же операции «точка-точка», что и интракоммуникаторы (последние общаются только в пределах одной группы процессов), вся связь с интеркоммуникаторами происходит между процессами в локальной группе и процессами в удаленной группе; связь внутри группы должна использовать другой (внутри) коммуникатор. intercommunicator
public
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 >, которая будет его лидером. |
|
intercommunicator public 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 >Должны ли процессы в этой группе иметь более высокий ранг, чем процессы в другой группе? Каждый из процессов в пределах определенной группы должен иметь одинаковое "высокое" значение. | |
|