Все следующие операции являются локальными.
Синтаксис функции MPI_COMM_SIZE представлен ниже
MPI_COMM_SIZE(comm, size)
IN | comm | коммуникатор (дескриптор) | |
OUT | size | количество процессов в группе comm (целое) |
int MPI_Comm_size(MPI_Comm comm, int *size)
MPI_COMM_SIZE(COMM, SIZE, IERROR)
INTEGER COMM, SIZE, IERROR
int MPI::Comm::Get_size() const
Объяснение: Функция MPI_COMM_SIZE эквивалентна:
функции MPI_COMM_GROUP по доступу к группе коммуникатора;
функции MPI_GROUP_SIZE по вычислению размера; функции
MPI_GROUP_FREE по удалению временной группы. Совокупность этих
операций используется так часто, что понадобилось сокращение в виде функции
MPI_COMM_SIZE.[]
Совет пользователям: Функция MPI_COMM_SIZE указывает число процессов в коммуникаторе. Для MPI_COMM_WORLD она указывает общее количество доступных процессов (для этой версии MPI не имеется никакого стандартного способа изменить число процессов после инициализации).
Запрос MPI_COMM_RANK указывает номер вызывающего процесса, который располагается в диапазоне от 0 до size-1, где size - возвращаемое значение MPI_COMM_SIZE.[]
Синтаксис функции MPI_COMM_RANK представлен ниже
MPI_COMM_RANK(comm, rank)
IN | comm | коммуникатор (дескриптор) | |
OUT | rank | номер вызывающего процесса в группе comm (целое) |
int MPI_Comm_rank(MPI_Comm comm, int *rank)
MPI_COMM_RANK(COMM, RANK, IERROR)
INTEGER COMM, RANK, IERROR
int MPI::Comm::Get_rank() const
Объяснение: Эта функция эквивалентна: по доступу к группе коммуникатора - функции MPI_COMM_GROUP; по вычислению номера - функции MPI_GROUP_RANK; по удалению временной группы - MPI_GROUP_FREE. Совокупность этих операций используется так часто, что оказалось полезным ввести функцию MPI_COMM_RANK.[]
Совет пользователям: Функция MPI_COMM_RANK возвращает номер процесса в частной группе коммуникатора. Это удобно использовать, как отмечено выше, cовместно с MPI_COMM_SIZE.
В модели клиент-сервер создается много программ, где один процесс (обычно
процесс ноль) играет роль распорядителя, а другие процессы служат
вычислительными узлами. В такой структуре два предшествующих запроса полезны
для определения ролей различных процессов коммуни-
катора.[]
Синтаксис функции MPI_COMM_COMPARE представлен ниже
MPI_COMM_COMPARE(comm1, comm2, result)
IN | comm1 | первый коммуникатор (дескриптор) | |
IN | comm2 | второй коммуникатор (дескриптор) | |
OUT | result | результат (целое) |
int MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result)
MPI_COMM_COMPARE(COMM1, COMM2, RESULT, IERROR)
INTEGER COMM1, COMM2, RESULT, IERROR
static int MPI::Comm::Compare(const MPI::Comm& comm1, const MPI::Comm& comm2)
Результат MPI_IDENT появляется тогда и только тогда, когда comm1 и comm2 являются дескрипторами одного и того же объекта (идентичные группы и одинаковые контексты). Результат MPI_CONGRUENT появляется, если исходные группы идентичны по компонентам и нумерации; эти коммуникаторы отличаются только контекстом. Результат MPI_SIMILAR имеет место, если члены группы обоих коммуникаторов являются одинаковыми, но порядок их нумерации различен. В противном случае выдается результат MPI_UNEQUAL.