Я прочитал определения этих условий, и моя интерпретация - то, что существует один к одному отношению между группой и коммуникатором. Группа является рядом процессов, которые хотят общаться друг с другом, и коммуникатор является реализацией для группы.
Это корректно? Почему имеют два различных условия, если это так?
Группа представляет собой упорядоченный набор идентификаторов процессов (спецификация MPI 2.2, раздел 6.2.1). Упорядочивание задается путем связывания с каждым идентификатором процесса. уникальный ранг от 0 до group.size - 1.
Коммуникатор инкапсулирует все коммуникации между набором процессов. Внутренний коммуникатор связан с группой, а также с контекстами связи как для двухточечной, так и для коллективной связи и, возможно, с другой контекстной информацией, такой как виртуальные топологии (спецификация, 6.1.2). Интеркоммуникатор связан с двумя неперекрывающимися группами.
Я (вероятно, очень свободно) думаю о группе коммуникатора как о его таблице символов.
Группа может содержать идентификаторы процессов от нескольких коммуникаторов.
Наконец, создание групп и операции над ними являются локальными для процесса и не связаны с межпроцессным взаимодействием. Для коммуникаторов это, как правило, не так (по самой своей природе).
Как я узнал после прочтения спецификации MPI, между коммуникаторами и группами существует много различий.
Изменить: Группы - это объекты, которые представляют группы процессов.
Коммуникатор - это набор процессов, которые могут взаимодействовать друг с другом и могут состоять из процессов из одной или нескольких групп.
Таким образом, это совершенно разные сущности. Их не следует путать друг с другом.