Синтаксис функции MPI_COMM_TEST_INTER представлен ниже.
MPI_COMM_TEST_INTER(comm, flag)
IN | comm | коммуникатор (дескриптор) | |
OUT | flag | (логическое значение) |
int MPI_Comm_test_inter(MPI_Comm comm, int *flag)
MPI_COMM_TEST_INTER(COMM, FLAG, IERROR)
INTEGER COMM, IERROR
LOGICAL FLAG
bool MPI::Comm::Is_inter() const
Эта локальная функция позволяет вызывающему процессу определять, является ли коммуникатор интер-коммуникатором или интра-коммуникатором. Она возвращает true, если это интер-коммуникатор, и false в противном случае.
Когда интер-коммуникатор используется как входной аргумент к средствам доступа коммуникатора, поведение функции описывается следующей таблицей.
MPI_COMM_*
|
|
Поведение функции |
|
MPI_COMM_SIZE | возвращает размер локальной группы. |
MPI_COMM_GROUP | возвращает локальную группу. |
MPI_COMM_RANK | возвращает номер в локальной группе. |
Кроме того, операция MPI_COMM_COMPARE применима и для интер-коммуникаторов. Оба коммуникатора должны быть или интра- или интер-коммуникаторами, иначе возвращается значение MPI_UNEQUAL. Локальная и удаленная группы должны соответствовать друг другу, чтобы получить в результате MPI_CONGRUENT и MPI_SIMILAR. В частности, результат MPI_SIMILAR возможен в случае, когда локальная и удаленная группы были похожими, но не идентичными.
Следующие средства обеспечивают непротиворечивый доступ к удаленной группе интеркоммуникатора (операции являются локальными).
Синтаксис функции MPI_COMM_REMOTE_SIZE представлен ниже.
MPI_COMM_REMOTE_SIZE(comm, size)
IN | comm | интеркоммуникатор (дескриптор) | |
OUT | size | количество процессов в удаленной группе comm (целое) |
int MPI_Comm_remote_size(MPI_Comm comm, int *size)
MPI_COMM_REMOTE_SIZE(COMM, SIZE, IERROR)
INTEGER COMM, SIZE, IERROR
int MPI::Intercomm::Get_remote_size() const
Синтаксис функции MPI_COMM_REMOTE_GROUP представлен ниже.
MPI_COMM_REMOTE_GROUP(comm, group)
IN | comm | интеркоммуникатор (дескриптор) | |
OUT | group | удаленная группа, соответствующая comm (дескриптор) |
int MPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group)
MPI_COMM_REMOTE_GROUP(COMM, GROUP, IERROR)
INTEGER COMM, GROUP, IERROR
MPI::Group MPI::Intercomm::Get_remote_group() const
Объяснение: Важно, чтобы доступ к локальным и удаленным группам
интер-коммуникатора был симметричным, поэтому была введена функция
MPI_COMM_REMOTE_GROUP в дополнение к
MPI_COMM_REMOTE_SIZE.[]