Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_AVS_gotovo.doc
Скачиваний:
7
Добавлен:
21.09.2019
Размер:
328.19 Кб
Скачать
  1. Понятие производного типа данных в mpi

В самом общем виде под производным типом данных в MPI можно понимать описание набора значений предусмотренного в MPI типа, причем в общем случае описываемые значения не обязательно непрерывно располагаются в памяти. Задание типа в MPI принято осуществлять при помощи карты типа (type map) в виде последовательности описаний входящих в тип значений; каждое отдельное значение описывается указанием типа и смещения адреса месторасположения от некоторого базового адреса, т.е. TypeMap = {(type0, disp0),...,(typen-1, dispn-1)}.

Часть карты типа с указанием только типов значений именуется в MPI сигнатурой типа: TypeSignature = {type0,...,typen-1}.

Сигнатура типа описывает, какие базовые типы данных образуют некоторый производный тип данных MPI, и, тем самым, управляет интерпретацией элементов данных при передаче или получении сообщений. Смещения карты типа определяют, где находятся значения данных.

Нижняя граница есть смещение для первого байта значений рассматриваемого типа данных. Верхняя граница представляет собой смещение для байта, располагающегося вслед за последним элементом рассматриваемого типа данных. При этом величина смещения для верхней границы может быть округлена вверх с учетом требований выравнивания адресов.

Протяженность – это размер памяти в байтах, который нужно отводить для одного элемента производного типа. Размер типа данных – это число байтов, которые занимают данные (разность между адресами последнего и первого байтов данных).

  1. Способы конструирования производных типов данных. Непрерывный способ конструирования

Для снижения сложности в MPI предусмотрено несколько различных способов конструирования производных типов:

  • непрерывный способ позволяет определить непрерывный набор элементов существующего типа как новый производный тип;

  • векторный способ обеспечивает создание нового производного типа как набора элементов существующего типа, между элементами которого имеются регулярные промежутки по памяти;

  • индексный способ отличается от векторного метода тем, что промежутки между элементами исходного типа могут иметь нерегулярный характер;

  • структурный способ обеспечивает самое общее описание производного типа через явное указание карты создаваемого типа данных.

Непрерывный способ конструирования

При непрерывном способе конструирования производного типа данных в MPI используется функция:

int MPI_Type_contiguous(int count, MPI_Data_type oldtype, MPI_Datatype *newtype),

где

  • count — количество элементов исходного типа;

  • oldtype — исходный тип данных;

  • newtype — новый определяемый тип данных.

Как следует из описания, новый тип newtype создается как count элементов исходного типа oldtype.

В определенном плане наличие непрерывного способа конструирования является избыточным, поскольку использование аргумента count в процедурах MPI равносильно использованию непрерывного типа данных такого же размера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]