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, и при создании новых порожденных типов данных.
Совет пользователям: Настоятельно рекомендуется, чтобы пользователи эти две функции вместо старых функций установки границ и длины типов данных.[]