Синтаксис функции CART_CREATE представлен ниже.
MPI_CART_CREATE(comm_old, ndims, dims, periods, reorder, comm_cart)
IN | comm_old | исходный коммуникатор (дескриптор) | |
IN | ndims | размерность создаваемой декартовой решетки (целое) | |
IN | dims | целочисленный массив размера ndims, хранящий количество процес-сов по каждой координате | |
IN | periods | массив логических элементов размера ndims, определяющий, перио-дична (true) или нет (false) решетка в каждой размерности | |
IN | reorder | нумерация может быть сохранена (false) или переупорядочена (true) (логическое значение) | |
OUT | comm_cart | коммуникатор новой декартовой топологии (дескриптор) |
int MPI_Cart_create(MPI_Comm comm_old, int ndims, int *dims,
int *periods,
int reorder, MPI_Comm *comm_cart)
MPI_CART_CREATE(COMM_OLD, NDIMS, DIMS,
PERIODS, REORDER, COMM_CART, IERROR)
INTEGER COMM_OLD, NDIMS, DIMS(*), COMM_CART, IERROR
LOGICAL PERIODS(*), REORDER
MPI::Cartcomm MPI::Intracomm::Create_cart(
int ndims, const int dims[], const bool periods[],
bool reorder) const
Функция MPI_CART_CREATE возвращает дескриптор нового коммуникатора, к которому подключается топологическая информация. Если reorder = false, то номер каждого процесса в новой группе идентичен номеру в старой группе. В противном случае функция может переупорядочивать процессы (возможно, чтобы обеспечить хорошее наложение виртуальной топологии на физическую систему). Если полная размерность декартовой решетки меньше, чем размер группы коммуникаторов, то некоторые процессы возвращаются с результатом MPI_COMM_NULL по аналогии с MPI_COMM_SPLIT. Вызов будет неверным, если он задает решетку большего размера, чем размер группы.