В чем разница между коммуникатором и группой в MPI?

StackOverflow https://stackoverflow.com/questions/2642827

  •  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.

группа Описывая все процессы, с которыми начинается ваша работа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top