X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b7dc075d2c3bdf2b384cb8897d16a4c0aa8ab0f7..8006a03b1ef66a0ddd4a4983ef170781a87a7225:/teshsuite/smpi/mpich3-test/datatype/struct-ezhov.c diff --git a/teshsuite/smpi/mpich3-test/datatype/struct-ezhov.c b/teshsuite/smpi/mpich3-test/datatype/struct-ezhov.c new file mode 100644 index 0000000000..036eaf6417 --- /dev/null +++ b/teshsuite/smpi/mpich3-test/datatype/struct-ezhov.c @@ -0,0 +1,59 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ +/* + * (C) 2008 by Argonne National Laboratory. + * See COPYRIGHT in top-level directory. + */ +#include +#include +#include "mpi.h" +#include + +#define COUNT 14 +#define SIZE 340 +#define EL_COUNT 1131 + +char s_buf[EL_COUNT*SIZE]; +char r_buf[EL_COUNT*SIZE]; + +int main( int argc, char **argv ) +{ + int rank, size, ret; + MPI_Status Status; + MPI_Request request; + MPI_Datatype struct_type, type1[COUNT]; + MPI_Aint disp1[COUNT] = {0, 0, 332, 340}; + int block1[COUNT] = {1, 56, 2, 1}; + + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size); + + type1[0] = MPI_LB; + type1[1] = MPI_FLOAT; + type1[2] = MPI_FLOAT; + type1[3] = MPI_UB; + + MPI_Type_struct(4, block1, disp1, type1, &struct_type); + + ret = MPI_Type_commit(&struct_type); + if (ret != MPI_SUCCESS) + { + fprintf(stderr, "Could not make struct type."), fflush(stderr); + MPI_Abort( MPI_COMM_WORLD, 1 ); + } + + memset(s_buf, 0, EL_COUNT*SIZE); + memset(r_buf, 0, EL_COUNT*SIZE); + + MPI_Isend(s_buf, EL_COUNT, struct_type, 0, 4, MPI_COMM_WORLD, &request); + MPI_Recv(r_buf, EL_COUNT, struct_type, 0, 4, MPI_COMM_WORLD, &Status ); + MPI_Wait(&request, &Status); + + MPI_Type_free(&struct_type); + + MPI_Finalize(); + + printf(" No Errors\n"); + + return 0; +}