X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bb7bb3965052aa05a4be5a7983c13c902481ae5c..a2896352972149a8e2c7c014c3413c5c7c686227:/examples/smpi/alltoallv.c diff --git a/examples/smpi/alltoallv.c b/examples/smpi/alltoallv.c deleted file mode 100644 index 492db4e072..0000000000 --- a/examples/smpi/alltoallv.c +++ /dev/null @@ -1,171 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; -*- */ -/* - * (C) 2001 by Argonne National Laboratory. - * See COPYRIGHT in top-level directory. - */ -#include "mpi.h" -#include - -#include -#include - -/* - This program tests MPI_Alltoallv by having processor i send different - amounts of data to each processor. - - Because there are separate send and receive types to alltoallv, - there need to be tests to rearrange data on the fly. Not done yet. - - The first test sends i items to processor i from all processors. - - Currently, the test uses only MPI_INT; this is adequate for testing systems - that use point-to-point operations - */ - - -/* example values: - * For 3 processes: - * <0> sbuf: (#9): [0][1][2][3][4][5][6][7][8] - <0> scount: (#3): [0][1][2] - <0> rcount: (#3): [0][0][0] - <0> sdisp: (#3): [0][1][3] - <0> rdisp: (#3): [0][0][0] - - <1> sbuf: (#9): [100][101][102][103][104][105][106][107][108] - <1> scount: (#3): [0][1][2] - <1> rcount: (#3): [1][1][1] - <1> sdisp: (#3): [0][1][3] - <1> rdisp: (#3): [0][1][2] - - <2> sbuf: (#9): [200][201][202][203][204][205][206][207][208] - <2> scount: (#3): [0][1][2] - <2> rcount: (#3): [2][2][2] - <2> sdisp: (#3): [0][1][3] - <2> rdisp: (#3): [0][2][4] - - after MPI_Alltoallv : - <0> rbuf: (#9): [0][-1][-2][-3][-4][-5][-6][-7][-8] - <1> rbuf: (#9): [1][101][201][-3][-4][-5][-6][-7][-8] - <2> rbuf: (#9): [3][4][103][104][203][204][-6][-7][-8] -*/ - - -static void print_buffer_int(void *buf, int len, char *msg, int rank) -{ - int tmp, *v; - printf("**<%d> %s (#%d): ", rank, msg, len); - for (tmp = 0; tmp < len; tmp++) { - v = buf; - printf("[%d]", v[tmp]); - } - printf("\n"); - free(msg); -} - - -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 < 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; -}