next up previous contents
Next: Настоящая длина типов данных Up: Новые функции манипуляции типами Previous: Конструкторы типов с явными   Contents

Длина и границы типов данных

Эта функция заменяет три функции - MPI_TYPE_UB, MPI_TYPE_LB и MPI_TYPE_EXTENT. Она также возвращает address sized integers, для привязки ФОРТРАНА. От использования MPI_TYPE_UB, MPI_TYPE_LB и MPI_TYPE_EXTENT следует воздержаться.

MPI_TYPE_GET_EXTENT(datatype, lb, extent)
IN datatype тип данных, о котором требуется информация (дескриптор)
OUT lb нижняя граница типа данных (целое)
OUT extent длина типа данных (целое)

int MPI_Type_get_extent(MPI_Datatype datatype, MPI_Aint *lb, MPI_Aint *extent) MPI_TYPE_GET_EXTENT(DATATYPE, LB, EXTENT, IERROR) INTEGER DATATYPE, IERROR INTEGER(KIND = MPI_ADDRESS_KIND) LB, EXTENT void MPI::Datatype::Get_extent(MPI::Aint& lb, MPI::Aint& extent) const

Возвращает нижнюю и длину типа данных (как определено в стандарте MPI-1 глава 3.12.2).

MPI позволяет изменть длину типа данных, используя маркеры верхней и нижней границ ( MPI_LB и MPI_UB). Это может быть полезно, так как позволяет регулировать шаг последовательных типов данных, скопированных конструкторами типов данных или вызовами функций отправки или приема. Тем не менее, текущий механизм достижения этого сложен и имеет ограничения. MPI_LB и MPI_UB - ``стойкие'': однажды появившись в типе данных, они не могут быть преодолены (например, верхняя граница может быть сдвинута вверх добавлением нового маркера MPI_UB, но не может быть сдвинута вниз ниже существующего маркера MPI_UB). Для подобных изменений предоставлен новый конструктор. Использование MPI_LB и MPI_UB прекращено.

MPI_TYPE_CREATE_RESIZED(oldtype, lb, extent, newtype)
IN oldtype входной тип данных (дескриптор)
IN lb новая нижная граница типа данных (целое)
IN extent новая длина типа данных (целое)
OUT newtype выходной тип данных (дескриптор)
int MPI_Type_create_resized(MPI_Datatype oldtype, MPI_Aint lb, MPI_Aint extent, MPI_Datatype *newtype) MPI_TYPE_CREATE_RESIZED(OLDTYPE, LB, EXTENT, NEWTYPE, IERROR) INTEGER OLDTYPE, NEWTYPE, IERROR INTEGER(KIND=MPI_ADDRESS_KIND) LB, EXTENT MPI::Datatype MPI::Datatype::Resized(const MPI::Aint lb, const MPI::Aint extent) const

Возвращает в newtype дескриптор нового типа данных, идентичного oldtype, за исключением того, что нижняя граница типа данных установлена в lb, а верхняя - в lb + extent. Любые предущие маркеры lb и ub стираются, и в позиции, указанные аргументами lb и extent помещается новая пара маркеров. Это вляет на поведение типа данных при передаче с count>1, и при создании новых порожденных типов данных.

Совет пользователям: Настоятельно рекомендуется, чтобы пользователи эти две функции вместо старых функций установки границ и длины типов данных.[]



Alex Otwagin 2002-12-10