X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0f5e8daaa6e9f74521068aa75837200bcd182ea6..cc01c6a871dbbfd0cc84e26eb9f94aeb539e613e:/examples/smpi/alltoallv.c diff --git a/examples/smpi/alltoallv.c b/examples/smpi/alltoallv.c index 5c3857ccb6..492db4e072 100644 --- a/examples/smpi/alltoallv.c +++ b/examples/smpi/alltoallv.c @@ -4,7 +4,7 @@ * See COPYRIGHT in top-level directory. */ #include "mpi.h" - #include +#include #include #include @@ -53,7 +53,7 @@ static void print_buffer_int(void *buf, int len, char *msg, int rank) { int tmp, *v; - printf("**<%d> %s (#%d): ", rank, msg,len); + printf("**<%d> %s (#%d): ", rank, msg, len); for (tmp = 0; tmp < len; tmp++) { v = buf; printf("[%d]", v[tmp]); @@ -63,109 +63,109 @@ static void print_buffer_int(void *buf, int len, char *msg, int rank) } -int main( int argc, char **argv ) +int main(int argc, char **argv) { - MPI_Comm comm; - int *sbuf, *rbuf, *erbuf; - int rank, size; - int *sendcounts, *recvcounts, *rdispls, *sdispls; - int i, j, *p, err; - - MPI_Init( &argc, &argv ); - err = 0; - - comm = MPI_COMM_WORLD; - - /* Create the buffer */ - MPI_Comm_size( comm, &size ); - MPI_Comm_rank( comm, &rank ); - sbuf = (int *)malloc( size * size * sizeof(int) ); - rbuf = (int *)malloc( size * size * sizeof(int) ); - erbuf = (int *)malloc( size * size * sizeof(int) ); // expected - if (!sbuf || !rbuf) { - fprintf( stderr, "Could not allocated buffers!\n" ); - MPI_Abort( comm, 1 ); - } - - /* Load up the buffers */ - for (i=0; i got %d expected %d for %dth\n", - rank, p[j],(i*(i+1))/2 + j, j ); - err++; - } - } - } - - /* Summary */ - if ( err > 0) { - printf("<%d> Alltoallv test: failure (%d errors).\n",rank,err); - } - if ( 0==rank ) { - printf("* Alltoallv TEST COMPLETE.\n"); - } - free( sdispls ); - free( rdispls ); - free( recvcounts ); - free( sendcounts ); - free( rbuf ); - free( sbuf ); - - MPI_Barrier( MPI_COMM_WORLD); - MPI_Finalize(); - return 0; + MPI_Comm comm; + int *sbuf, *rbuf, *erbuf; + int rank, size; + int *sendcounts, *recvcounts, *rdispls, *sdispls; + int i, j, *p, err; + + MPI_Init(&argc, &argv); + err = 0; + + comm = MPI_COMM_WORLD; + + /* Create the buffer */ + MPI_Comm_size(comm, &size); + MPI_Comm_rank(comm, &rank); + sbuf = (int *) malloc(size * size * sizeof(int)); + rbuf = (int *) malloc(size * size * sizeof(int)); + erbuf = (int *) malloc(size * size * sizeof(int)); // expected + if (!sbuf || !rbuf) { + fprintf(stderr, "Could not allocated buffers!\n"); + MPI_Abort(comm, 1); + } + + /* Load up the buffers */ + for (i = 0; i < size * size; i++) { + sbuf[i] = i + 100 * rank; + rbuf[i] = -i; + erbuf[i] = -i; + } + + /* Create and load the arguments to alltoallv */ + sendcounts = (int *) malloc(size * sizeof(int)); + recvcounts = (int *) malloc(size * sizeof(int)); + rdispls = (int *) malloc(size * sizeof(int)); + sdispls = (int *) malloc(size * sizeof(int)); + if (!sendcounts || !recvcounts || !rdispls || !sdispls) { + fprintf(stderr, "Could not allocate arg items!\n"); + MPI_Abort(comm, 1); + } + for (i = 0; i < size; i++) { + sendcounts[i] = i; + recvcounts[i] = rank; + rdispls[i] = i * rank; + sdispls[i] = (i * (i + 1)) / 2; + } + + /* debug */ + /* + print_buffer_int( sbuf, size*size, strdup("sbuf:"),rank); + print_buffer_int( sendcounts, size, strdup("scount:"),rank); + print_buffer_int( recvcounts, size, strdup("rcount:"),rank); + print_buffer_int( sdispls, size, strdup("sdisp:"),rank); + print_buffer_int( rdispls, size, strdup("rdisp:"),rank); + */ + + + /* debug : erbuf */ + /* debug + for (i=0; i got %d expected %d for %dth\n", + rank, p[j], (i * (i + 1)) / 2 + j, j); + err++; + } + } + } + + /* Summary */ + if (err > 0) { + printf("<%d> Alltoallv test: failure (%d errors).\n", rank, err); + } + if (0 == rank) { + printf("* Alltoallv TEST COMPLETE.\n"); + } + free(sdispls); + free(rdispls); + free(recvcounts); + free(sendcounts); + free(rbuf); + free(sbuf); + + MPI_Barrier(MPI_COMM_WORLD); + MPI_Finalize(); + return 0; }