X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/61fc507b7dde640d3bd7d4818d15674436c34f97..84402e8e2ee2a2d0bef25fdceb0a263ed8b471f6:/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c?ds=sidebyside diff --git a/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c b/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c index 7d88c60259..a5e55bfe86 100644 --- a/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c +++ b/teshsuite/smpi/coll-alltoallv/coll-alltoallv.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2019. The SimGrid Team. +/* Copyright (c) 2013-2020. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -101,20 +101,23 @@ int main(int argc, char **argv) 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"); + if(status!=MPI_ERR_COUNT) + printf("MPI_Alltoallv did not return MPI_ERR_COUNT 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 (rank == 0)//if total recvcounts == 0 the call is not illegal, so be sure to fail for rank 0 to avoid deadlocks + status = MPI_Alltoallv(NULL, sendcounts, sdispls, MPI_INT, NULL, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD); + else + 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"); + if(status!=MPI_ERR_COUNT) + printf("MPI_Alltoallv did not return MPI_ERR_COUNT 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");