|
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>Должны ли процессы в этой группе иметь более высокий ранг, чем процессы в другой группе? Каждый из процессов в пределах определенной группы должен иметь одинаковое "высокое" значение. | |
|