MPI_Type_struct() является самым общим конструктором типов
данных в MPI. Поэтому пользователь должен обеспечить полное описание
каждого элемента типа. Если данные, которые будут переданы, состоят
из подмножества элементов массива, возможно не стоит обеспечивать
слишком детальную информацию, так как все элементы имеют тот же самый
основной тип. MPI обеспечивает три производных конструктора данных
для того, чтобы работать в этой ситуации: MPI_Type_Contiguous(),
MPI_Type_vector() и
MPI_Type_indexed(). Первый
конструктор строит производный тип, элементами которого являются смежные
элементы массива. Второй конструктор строит тип, элементами которого
являются равномерно разделенные промежутками элементы массива, а третий
строит тип, элементы которого являются произвольными элементами массива.
Прежде чем любой производный тип может быть использован в коммуникации,
он должен быть объявлен вызовом MPI_Type_commit().
Ниже приведены сведения о синтаксисе дополнительных конструкторов типов MPI:
MPI_Datatype oldtype, MPI_Datatype* newtype);
int stride, MPI_Datatype element_type,
MPI_Datatype* newtype);
int* array_of_block_lengths,
int* array_of_displacements,
MPI_Datatype element_type,
MPI_Datatype* newtype);