X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5a37cda4c36f1fc25b8154daf308cbcc45a42b84..3b578f744282579b374a1461561b41f2d8b2684b:/teshsuite/smpi/mpich3-test/topo/dims1.c diff --git a/teshsuite/smpi/mpich3-test/topo/dims1.c b/teshsuite/smpi/mpich3-test/topo/dims1.c new file mode 100644 index 0000000000..b429776470 --- /dev/null +++ b/teshsuite/smpi/mpich3-test/topo/dims1.c @@ -0,0 +1,144 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ +/* + * (C) 2003 by Argonne National Laboratory. + * See COPYRIGHT in top-level directory. + */ +#include "mpi.h" +#include +#include "mpitest.h" + +int prodof( int ndims, const int dims[] ); +int increasing( int ndims, const int dims[] ); + +int prodof( int ndims, const int dims[] ) +{ + int i, prod=1; + for (i=0; i dims[i-1]) { + printf ("%d = dims[%d] > dims[%d] = %d\n", dims[i], i, + i-1, dims[i-1] ); + err = 1; + } + } + return err; +} +int main( int argc, char *argv[] ) +{ + int errs = 0; + int dims[4], nnodes, ndims; + + MTest_Init( &argc, &argv ); + + /* Test multiple dims create values. For each, make sure that the + product of dims is the number of input nodes */ + nnodes = 2*3*5*7*11; + ndims = 2; + dims[0] = dims[1] = 0; + MPI_Dims_create( nnodes, ndims, dims ); + if (prodof(ndims,dims) != nnodes) { + errs++; + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + if (increasing( ndims, dims )) { + errs++; + printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" ); + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + + /* Test multiple dims create values. For each, make sure that the + product of dims is the number of input nodes */ + nnodes = 2*7; + ndims = 2; + dims[0] = dims[1] = 0; + MPI_Dims_create( nnodes, ndims, dims ); + if (prodof(ndims,dims) != nnodes) { + errs++; + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + if (increasing( ndims, dims )) { + errs++; + printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" ); + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + + nnodes = 2*2*3*3*5*7*11; + ndims = 2; + dims[0] = dims[1] = 0; + MPI_Dims_create( nnodes, ndims, dims ); + if (prodof(ndims,dims) != nnodes) { + errs++; + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + if (increasing( ndims, dims )) { + errs++; + printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" ); + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + + nnodes = 11; + ndims = 2; + dims[0] = dims[1] = 0; + MPI_Dims_create( nnodes, ndims, dims ); + if (prodof(ndims,dims) != nnodes) { + errs++; + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + if (increasing( ndims, dims )) { + errs++; + printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" ); + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + + nnodes = 5*7*11; + ndims = 4; + dims[0] = dims[1] = dims[2] = dims[3] = 0; + MPI_Dims_create( nnodes, ndims, dims ); + if (prodof(ndims,dims) != nnodes) { + errs++; + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + if (increasing( ndims, dims )) { + errs++; + printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" ); + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + + nnodes = 64; + ndims = 4; + dims[0] = dims[1] = dims[2] = dims[3] = 0; + MPI_Dims_create( nnodes, ndims, dims ); + if (prodof(ndims,dims) != nnodes) { + errs++; + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + if (increasing( ndims, dims )) { + errs++; + printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" ); + printf( "dims create returned the wrong decomposition for %d in %d dims\n", + nnodes, ndims ); + } + + MTest_Finalize( errs ); + MPI_Finalize(); + return 0; + +}