| |
Предположим, мы реализовали получения как опорное дерево, реализованное
черз процедуры типа ``точка-точка''. Так как буфер приема верен только для
корневого процесса, понадобится выделить некоторое время место получения данных
в промежуточных точках. Но если пользователь изменил длину типа данных с
использованием значений MPI_UB и MPI_LB, длина типа данных не
может быть использована для определения объема места, которое необходимо
выделить. Для определения настоящей длины типа данных есть новая функция.
MPI_TYPE_GET_TRUE_EXTENT(datatype, true_lb, true_extent) | ||
IN | datatype | тип данных, о котором требуется информация (дескриптор) |
OUT | true_lb | настоящая нижняя граница типа данных (дескриптор) |
OUT | true_extent | настоящая длина типа данных (целое) |
int MPI_Type_get_true_extent(MPI_Datatype datatype, MPI_Aint *true_lb, MPI_Aint *true_extent) MPI_TYPE_GET_TRUE_EXTENT(DATATYPE, TRUE_LB, TRUE_EXTENT, IERROR) INTEGER DATATYPE, IERROR INTEGER(KIND = MPI_ADDRESS_KIND) TRUE_LB, TRUE_EXTENT void MPI::Datatype::Get_true_extent(MPI::Aint& true_lb, MPI::Aint& true_extent) const
true_lb возвращает смещение самого нижнего элемента хранилища, адресуемого типом данных, то есть нижнюю границу соответствующей карты типа, игнорируя маркеры MPI_LB. true_extent возвращает настоящий размер типа данных, т.е. длину соотвествующей карты типа, игнорируя маркеры MPI_LB и MPI_UB, не производя округление для выравнивания. Если карта типа, ассоциированая с типом данных имеет вид
)}
Тогда
и
.
(Читатели должны сравнить это с определениями в главе 3.12.3 стандарта MPI-1, описывающими функцию MPI_TYPE_EXTENT.)
true_extent - минимальное количество байт памяти, необходимых для хранения несжатого типа данных.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |