Build Matrix Derived Datatype
void Build_matrix_type(LOCAL_MATRIX_T* local_A /* in */) {
MPI_Aint displacements[2];
MPI_Datatype typelist[2];
MPI_Aint start_address, address;
MPI_Type_contiguous(Order(local_A)*Order(local_A), MPI_FLOAT, &temp_mpi_t);
block_lengths[0] = block_lengths[1] = 1;
typelist[1] = temp_mpi_t;
MPI_Address(local_A, &start_address);
MPI_Address(&(local_A->n_bar), &address);
displacements[0] = address - start_address;
MPI_Address(local_A->entries, &address);
displacements[1] = address - start_address;
MPI_Type_struct(2, block_lengths, displacements,
typelist, &local_matrix_mpi_t);
MPI_Type_commit(&local_matrix_mpi_t);
} /* Build_matrix_type */