| 
 | |
|  | 
 
 
 
 
 
 
 
  
Предположим, мы реализовали получения как опорное дерево, реализованное 
черз  процедуры типа ``точка-точка''. Так как буфер приема верен только для
корневого процесса, понадобится выделить некоторое время место получения данных
в промежуточных точках. Но если пользователь изменил длину типа данных с
использованием значений 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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |