Чем отличается коммуникатор от группы в MPI?

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

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


person Rohit Banga    schedule 15.04.2010    source источник


Ответы (5)


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

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

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

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

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

person David Glaubman    schedule 04.05.2010

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

Изменить: группы — это объекты, представляющие группы процессов.

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

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

person Rohit Banga    schedule 16.04.2010
comment
Я проголосовал за это, потому что это плохой ответ на вопрос, он ничего не объясняет ОП, в чем могут быть различия. - person High Performance Mark; 18.04.2010

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

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

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

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

person Gopal Bhaskaran    schedule 03.12.2014

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

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

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

person Youjun Hu    schedule 25.07.2018

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

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

person gaiss Albaag    schedule 15.07.2018