В чем разница между коммуникатором и группой в MPI? - PullRequest
14 голосов
/ 15 апреля 2010

Я прочитал определения этих терминов, и моя интерпретация заключается в том, что между группой и коммуникатором существует отношение один к одному. Группа - это набор процессов, которые хотят общаться друг с другом, а коммуникатор - это реализация для группы.

Это правильно? Зачем два разных термина, если это так?

Ответы [ 5 ]

6 голосов
/ 05 мая 2010

A группа - это упорядоченный набор идентификаторов процесса (спецификация MPI 2.2, с. 6.2.1). Порядок задается связыванием с каждым идентификатором процесса уникального rank от 0 до group.size - 1.

A коммуникатор инкапсулирует все коммуникации между множеством процессов. Интра-коммуникатор связан с группой, а также с контекстами связи для двухточечной и коллективной связи и, возможно, с другой контекстной информацией, такой как виртуальные топологии (спецификация, 6.1.2). Интеркоммуникатор связан с двумя непересекающимися группами.

Я (возможно, очень слабо) считаю группу коммуникатора своей таблицей символов.

Группа может содержать идентификаторы процесса от нескольких коммуникаторов.

Наконец, построение и операции над группами являются локальными для процесса и не включают межпроцессное взаимодействие. Как правило, это не относится к коммуникаторам (по самой своей природе).

4 голосов
/ 16 апреля 2010

Существует много различий между коммуникаторами и группами, как я выяснил после прочтения спецификации MPI.

Edit: Группы - это объекты, представляющие группы процессов.

Коммуникатор - это набор процессов, которые могут взаимодействовать друг с другом и могут состоять из процессов из одной группы или из нескольких групп.

Таким образом, они совершенно разные сущности. Их не следует путать друг с другом.

2 голосов
/ 03 декабря 2014

Коммуникатор содержит группу (ы), в то время как группа - это просто набор процессов.

Если коммуникатор содержит только одну группу, он называется внутрикоммуникатором (коммуникатор MPI_COMM_WORLD - это один из них, который относится к одной группе, включающей все ранги).

Если он содержит две группы, он вызывается в интеркоммуникаторе (по умолчанию он не создан).

Взгляните на https://computing.llnl.gov/tutorials/mpi_advanced/DavidCronkSlides.pdf, где он дает очень хорошее наглядное объяснение того, как коммуникатор является контейнером для одной или двух групп.

1 голос
/ 25 июля 2018

Группа в MPI соответствует математическому понятию «набор», которое вводится в MPI для облегчения организации процессов и создания новых коммуникаций.Например, вы можете использовать операции объединения и пересечения на наборах для создания новых наборов, чтобы вы могли использовать их для создания новых коммуникаторов.

Группа не имеет ничего общего с коммуникациями, хотя группу можно использовать для созданиякоммуникатор (коммуникатор - это группа плюс контекст).

Группа также может использоваться в качестве идентификатора при распределении задачи / данных между различными процессами.Например, мы можем проверить, входит ли процесс в группу, чтобы определить, должен ли он что-то делать.

0 голосов
/ 15 июля 2018

A коммуникатор - это объект, описывающий группу процессов. Во многих приложениях все процессы тесно связаны друг с другом, и вам нужен только один коммуникатор MPI_COMM_WORLD.

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

...