коммуникации для некоторого множества процессов. Все процессы, связанные с одним и тем же коммуникатором, относятся к одной и той же группе коммуникации. Работу, выполняемую MPI-программой, можно разделить между группами коммуникаций. По умолчанию все процессы относятся к группе MPI_C0MM_WORLD. Для создания новых ко
Благодаря использованию рангов и коммуникаторов MPI-задачи легко идентифицировать и различать. Ранг и коммуникатор позволяют структурировать программу как SPMD- или MPMD-модель либо как некоторую их комбинацию. Для упрощения кода MPI-программы мы используем ранг и коммуникатор в сочетании с параметризованным программированием и объектно-ориентированными методами. Шаблоны можно использовать не только при
|Таблица 9.1. Функции, используемыедля работы с коммуникаторами
| int MPI_Intercomm_create (MPI_Comm LocalComm,int LocalLeader, MPI_Comm PeerComm, int remote_leader, int MessageTag, MPI_Comm *CommOut); | Создает inter-коммуникатор из двух intra коммуникаторов |
| int MPI_Intercomm_merge (MPI_Comm Comm, int High,MPI_Comm *CommOut); | Соз |
| int MPI_Cartdim_get(MPI_Comm Comm,int *NDims); | Возвращает декартову топологическую информацию, связанную с коммуникатором |
| int MPI_Cart_create(MPI_Comm CommOld, int NDims, int *Dims, int *Periods, int Reorder, MPI_Comm *CommCart) | Создает новый коммуникатор, к которому присоединяется топологическая информация |
| int MPI_Cart_sub(MPI_Comm Comm, int *RemainDims, MPI_Comm *CommNew); | Делит коммуникатор на подгруппы, которые образуют декартовы подсистемы более низкой размерности |
| int MPI_Cart_shift(MPI_Comm Comm, int Direction, int Display,int *Source,int *Destination); | Считывает смещенные ранги источника и приемника при заданном направлении и величине смещения |
| int MPI_Cart_map(MPI_Comm CommOld, int NDims, int *Dims, int *Periods, int *Newrank); | Преобразует процесс в декартову топологическую информацию |
| int MPI_Cart_get(MPI_Comm Comm, int MaxDims, int *Dims, int *Periods, int *Coords); | Возвращает декартову топологическую информацию, связанную с коммуникатором |
| int MPI_Cart_coords(MPI_Comm Comm, int Rank, int MaxDims, int *Coords); | Вычисляет координаты процесса в декартовой топологии при заданном ранге в группе |
| int MPI_Comm_create(MPI_Comm Comm, MPI_Group Group, MPI_Comm *CommOut) ; | Создает новый коммуникатор |
| int MPI_Comm_rank(MPI_Comm Comm, int *Rank ) ; | Вычисляет и возвращает ранг вызывающего процесса в коммуникаторе |
| int MPI_Cart_rank(MPI_Comm Comm, int *Coords, int *Rank ); | Вычисляет и возвращает ранг процесса в коммуникаторе при заданном декартовом местоположении |
| int MPI_Comm_compare(MPI_Comm Comm1, MPI_Comm Comm2, int *Result); | Сравнивает два коммуникатора Comm1 и Comm2 |
