ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
65
Конструкторы интеркоммуникаторов (конструктор — это подпрограмма, соз-
дающая соответствующие структуры данных) являются блокирующими операция-
ми, поэтому во избежание тупиковых ситуаций локальная и удаленная группа не
должны пересекаться, т. е. они не должны содержать одинаковые процессы.
Интеробмен характеризуется следующими свойствами:
синтаксис двухточечных обменов одинаков в операциях обмена в рамках
интра- и интеркоммуникаторов;
адресат задается рангом процесса в удаленной группе;
операции обмена с использованием интеркоммуникаторов не вступают в
конфликт с обменами, использующими другой коммуникатор;
интеркоммуникатор нельзя использовать для коллективных обменов;
коммуникатор не может объединять свойства интер- и интракоммуникато-
ра.
Интеркоммуникатор создается коллективным вызовом подпрограммы
MPI_Intercomm_create (подробнее об этой подпрограмме поговорим позже).
Создание групп процессов
Операции создания групп процессов аналогичны математическим операциям
над множествами:
объединение —
к процессам первой группы добавляются процессы второй
группы, не принадлежащие первой;
пересечение —
в новую группу включаются все процессы, принадлежащие
двум группам одновременно. Ранги им назначаются как в первой группе;
разность
— в новую группу включаются все процессы первой группы, не
входящие во вторую группу. Ранги назначаются, как в первой группе.
Новую группу можно создать только из уже существующих. Базовая группа,
из которой формируются все другие, связана с коммуникатором mpi_comm_world. В
подпрограммах создания групп, как правило, нельзя использовать пустой коммуни-
катор mpi_comm_null.
Доступ к группе group, связанной с коммуникатором comm, можно получить,
обратившись к подпрограмме MPI_Comm_group:
int MPI_Comm_group (MPI_Comm comm, MPI_Group *group)
MPI_COMM_GROUP(COMM, GROUP, IERR)
Ее выходным параметром является группа. Для выполнения операций с
группой к ней сначала необходимо получить доступ.
1...,57,58,59,60,61,62,63,64,65,66 68,69,70,71,72,73,74,75,76,77,...180