Struct Najbardzięj ogólny typ, elementy nie muszą być jednakowego typu, a odstępy między nimi są określone przez tablicę przesunięć, której elementy są podane w bajtach.
int MPI_Type_struct(int count,int *array_of_block_lengths,MPI_Aint *array_of_displacements,MPI_Datatype *array_of_types,MPI_Datatype *newtype);
Extent Zwraca rozmiar w bajtach danego typu danych. Funkcja ta jest użyteczna w podprogramach, które wymagają rozmiaru danego typu w bajtach np. w celu obliczenia przesunięcia.
int MPI_Type_extent(MPI_Datatype dtype, MPI_Aint *pextent)
Commit Zatwierdza nowy typ w systemie. Wymagane dla wszystkich nowo stworzonych pochodnych typów danych.
int MPI_Type_commit ( MPI_Datatype *datatype )
Przykład – CONTIGUOUS #include "mpi.h"#include <stdio.h>#define SIZE 4main(int argc, char *argv[]) { int numtasks, rank, source=0, dest, tag=1, i; float a[SIZE][SIZE] ={1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0};float b[SIZE];MPI_Status stat; MPI_Datatype rowtype;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD, &rank);MPI_Comm_size(MPI_COMM_WORLD, &numtasks);MPI_Type_contiguous(SIZE, MPI_FLOAT, &rowtype);MPI_Type_commit(&rowtype);if (numtasks == SIZE){if (rank == 0) { for (i=0; i<numtasks;