Освобождение созданного типа данных
MPI_Type_free(datatype)
Устанавливает datatype в MPI_DATATYPE_NULL.
Вектор Выполняет размножение типов данных, которые состоят из равных блоков. Интервал между блоками кратно протяжённости старого типа данных. MPI_Type_vector(count, blocklength, stride, oldtype, newtype)
Пример:пусть, oldtype имеет карту типа {(double, 0), (char,8)}, с протяжённостью 16. Вызов MPI_Type_vector(2, 3, 4, oldtype, newtype) создаст тип данных с картой: {(double, 0), (char, 8), (double, 16), (char, 24), (double, 32), (char, 40), (double, 64), (char, 72), (double, 80), (char, 88), (double, 96), (char, 104)}. Это два блока с тремя копиями старого типа в каждом, с шагом 4 элемента (4×16 байтов) друг от друга. Вызов MPI_Type_contiguous (count, oldtype, newtype) эквивалентен вызову MPI_Type_vector (count, 1, 1, oldtype, newtype)
3. Hвектор Функция MPI_Type_hvectorаналогична MPI_Type_vector, за исключением того, что stride задается в байтах, а не в элементах, поэтому смещение возможно на произвольное число байт. Символ h добавляет смысл heterogeneous – неоднородность. Int MPI_Type_hvector(int count, int blocklength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype)
Индексированные данные Функция MPI_Type_indexedвыполняет размножение старого типа в последовательность блоков (каждый блок это конкатенация старого типа данных), где каждый блок может содержать различное число копий и иметь различное смещение. Все смещения блоков кратны протяжённости старого типа. MPI_Type_indexed (count, array_of_blocklengths, array_of_displacements, oldtype, newtype)
Пример Пусть oldtype имеет карту типа {(double, 0), (char, 8)}, c протяженностью 16. Пусть B= (3,1) и пусть D= (4,0). Вызов MPI_Type_indexed (2, B, D, oldtype, newtype) возвращает тип данных с картой типа {(double, 64), (char, 72), (double, 80), (char, 88), (double, 96), (char, 104), (double, 0), (char, 8)}: три карты старого типа, начинающиеся со смещения 64, и одна копия, начинающаяся со смещения 0.
Вызов MPI_Type_vector (count, blocklength, stride, oldtype, newtype)эквивалентен вызову MPI_Type_indexed (count, B, D, oldtype, newtype), где
Функция MPI_Type_hindexed идентична MPI_Type_indexed, за исключением того, что смещения между блоками в array_of_displacements определены в байтах, а не в значениях, кратных протяжённости oldtype. Буква h добавляет смысл heterogeneous – неоднородность. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|