В чем разница между коммуникатором и группой в MPI?
-
27-09-2019 - |
Вопрос
Я прочитал определения этих терминов, и мою интерпретацию состоит в том, что между группой и коммуникатором есть одно к одному соотношению. Группа - это набор процессов, которые хотят общаться друг с другом, и коммуникатор является реализацией для группы.
Это правильно? Почему два разных термина, если это так?
Решение
А. группа является Заказанный набор идентификаторов процессов (MPI 2.2 SPEC, SEC 6.2.1). Заказ дается связыванием с каждым идентификатором процесса уникальным классифицировать От 0 до группы. Обык - 1.
А. коммуникатор инкапсулирует всю связь среди набора процессов. Внутри-коммуникатор связан с группой, а также Конечные контексты общения как для точек и коллективной связи И, возможно, другая контекстная информация, такая как виртуальные топологии (спецификация, 6.1.2). Межусмысленник связан с двумя не перекрывающимися группами.
Я (вероятно, очень слабо) подумайте о группе коммуникатора в качестве таблицы символов.
Группа может содержать идентификаторы процесса из нескольких коммуникаторов.
Наконец, построение и операции по группам являются локальными к процессу, и не включает в себя интерпреспессию связи. Это не, вообще, правда для коммуникаторов (по самой своей природе).
Другие советы
Есть много различий между коммуникаторами и группами, поскольку я обнаружил после прочтения спецификации MPI.
Редактировать: группы - это объекты, которые представляют группы процессов.
Коммуникатор - это набор процессов, которые могут взаимодействовать друг с другом и могут состоять из процессов из одной группы или из нескольких групп.
Таким образом, они совершенно разные объекты. Они не должны быть путать друг с другом.
Коммуникатор содержит группу (ы), в то время как группа - это просто сбор процессов.
Если коммуникатор содержит только одну группу, она называется внутриумным коммуникатором (Communicator, MPI_Comm_world - это то, что относится к одной группе, которая включает в себя все ранги).
Если он содержит две группы, он вызывается в InterCommunicator (для вас нет, созданных для вас нет).
Взгляни на https://computing.llnl.gov/tutorials/mpi_advanced/davidcronkslides.pdf. где он дает очень хорошее изобразительное объяснение того, как коммуникатор является контейнером для одной или двух групп.
Группа в MPI соответствует математической концепции «Set», которая вводится в MPI для облегчения организации процессов и создания новых коммуникаций. Например, вы можете использовать Union и операции пересечения на наборах для создания новых наборов, чтобы вы могли использовать их для создания новых коммуникаторов.
Группа не имеет ничего общего с коммуникациями, хотя группа может использоваться для создания коммуникатора (коммуникатор - это группа плюс контекст).
Группа также может использоваться в качестве идентификатора в распределении задачи / данных между различными процессами. Например, мы можем проверить, является ли процесс в группе, чтобы определить, следует ли что-то сделать.
А. коммуникатор это объект, описывающий группу процессов. Во многих приложениях все процессы работают вместе тесно связаны, а единственный коммуникатор, который вам нужен, это MPI_Comm_world.
группа Описывая все процессы, с которыми начинается ваша работа.