X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/db17323a11a3089f492c2cae1be7913673689d5c..c81c99a491282f76757c2673961e3cdee6853539:/teshsuite/smpi/mpich3-test/comm/ctxalloc.c diff --git a/teshsuite/smpi/mpich3-test/comm/ctxalloc.c b/teshsuite/smpi/mpich3-test/comm/ctxalloc.c new file mode 100644 index 0000000000..ef66be3bf9 --- /dev/null +++ b/teshsuite/smpi/mpich3-test/comm/ctxalloc.c @@ -0,0 +1,62 @@ +/* -*- 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" + +/* + * This program tests the allocation (and deallocation) of contexts. + * + */ +int main( int argc, char **argv ) +{ + int errs = 0; + int i, j, err; + MPI_Comm newcomm1, newcomm2[200]; + + MTest_Init( &argc, &argv ); + + /* Get a separate communicator to duplicate */ + MPI_Comm_dup( MPI_COMM_WORLD, &newcomm1 ); + + MPI_Errhandler_set( newcomm1, MPI_ERRORS_RETURN ); + /* Allocate many communicators in batches, then free them */ + for (i=0; i<1000; i++) { + for (j=0; j<200; j++) { + err = MPI_Comm_dup( newcomm1, &newcomm2[j] ); + if (err) { + errs++; + if (errs < 10) { + fprintf( stderr, "Failed to duplicate communicator for (%d,%d)\n", i, j ); + MTestPrintError( err ); + } + } + } + for (j=0; j<200; j++) { + err = MPI_Comm_free( &newcomm2[j] ); + if (err) { + errs++; + if (errs < 10) { + fprintf( stderr, "Failed to free %d,%d\n", i, j ); + MTestPrintError( err ); + } + } + } + } + err = MPI_Comm_free( &newcomm1 ); + if (err) { + errs++; + fprintf( stderr, "Failed to free newcomm1\n" ); + MTestPrintError( err ); + } + + MTest_Finalize( errs ); + + MPI_Finalize(); + + return 0; +}