X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/611d822b02f836d7abe031cced6adc4281ef4356..a9811844d60094caf4849b091967f50929e67a7a:/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c diff --git a/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c b/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c index 0cfa6cc735..aa777e0795 100644 --- a/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c +++ b/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2018. The SimGrid Team. +/* Copyright (c) 2013-2019. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -38,18 +38,17 @@ <2> sdisp: (#3): [0][1][3] <2> rdisp: (#3): [0][2][4] - after MPI_Alltoallv : + after MPI_Alltoallvv : <0> rbuf: (#9): [-1][-1][-1][-1][-1][-1][-1][-1][-1] <1> rbuf: (#9): [1][101][201][-1][-1][-1][-1][-1][-1] <2> rbuf: (#9): [3][4][103][104][203][204][-1][-1][-1] */ -static void print_buffer_int(void *buf, int len, const char *msg, int rank) +static void print_buffer_int(const int* buf, int len, const char* msg, int rank) { printf("[%d] %s (#%d): ", rank, msg, len); for (int tmp = 0; tmp < len; tmp++) { - int* v = buf; - printf("[%d]", v[tmp]); + printf("[%d]", buf[tmp]); } printf("\n"); } @@ -73,6 +72,7 @@ int main(int argc, char **argv) } MPI_Comm_rank(comm, &rank); int size2 = size * size; + xbt_assert(size2 > 0); int* sbuf = (int*)xbt_malloc(size2 * sizeof(int)); int* rbuf = (int*)xbt_malloc(size2 * sizeof(int)); @@ -93,6 +93,35 @@ int main(int argc, char **argv) rdispls[i] = i * rank; sdispls[i] = (i * (i + 1)) / 2; } + int status; + + status = MPI_Alltoallv(NULL, sendcounts, sdispls, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD); + if(status!=MPI_ERR_BUFFER) + printf("MPI_Alltoallv did not return MPI_ERR_BUFFER for empty sendbuf\n"); + status = MPI_Alltoallv(sbuf, NULL, sdispls, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD); + if(status!=MPI_ERR_ARG) + printf("MPI_Alltoallv did not return MPI_ERR_ARG for NULL sendcounts\n"); + status = MPI_Alltoallv(sbuf, sendcounts, NULL, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD); + if(status!=MPI_ERR_ARG) + printf("MPI_Alltoallv did not return MPI_ERR_ARG for NULL senddispl\n"); + status = MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_DATATYPE_NULL, rbuf, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD); + if(status!=MPI_ERR_TYPE) + printf("MPI_Alltoallv did not return MPI_ERR_TYPE for MPI_DATATYPE_NULL sendtype\n"); + status = MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, NULL, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD); + if(status!=MPI_ERR_BUFFER) + printf("MPI_Alltoallv did not return MPI_ERR_BUFFER for empty recvbuf\n"); + status = MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, rbuf, NULL, rdispls, MPI_INT, MPI_COMM_WORLD); + if(status!=MPI_ERR_ARG) + printf("MPI_Alltoallv did not return MPI_ERR_ARG for NULL recvcounts\n"); + status = MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, rbuf, recvcounts, NULL, MPI_INT, MPI_COMM_WORLD); + if(status!=MPI_ERR_ARG) + printf("MPI_Alltoallv did not return MPI_ERR_ARG for NULL recvdispl\n"); + status = MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, rbuf, recvcounts, rdispls, MPI_DATATYPE_NULL, MPI_COMM_WORLD); + if(status!=MPI_ERR_TYPE) + printf("MPI_Alltoallv did not return MPI_ERR_TYPE for MPI_DATATYPE_NULL recvtype\n"); + status = MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, MPI_COMM_NULL); + if(status!=MPI_ERR_COMM) + printf("MPI_Alltoallv did not return MPI_ERR_COMM for MPI_COMM_NULL comm\n"); print_buffer_int(sbuf, size2, "sbuf:", rank); print_buffer_int(sendcounts, size, "scount:", rank);