Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
MPI_Scatterv: sendcounts and displs params can be NULL on non-root ranks
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 18 Aug 2019 10:34:26 +0000 (12:34 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 18 Aug 2019 10:34:26 +0000 (12:34 +0200)
src/smpi/bindings/smpi_pmpi_coll.cpp

index fc591d6..2fb0a1d 100644 (file)
@@ -360,8 +360,10 @@ int PMPI_Iscatterv(const void* sendbuf, const int* sendcounts, const int* displs
                    MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request* request)
 {
   CHECK_ARGS(comm == MPI_COMM_NULL, MPI_ERR_COMM, "Iscatterv: the communicator cannot be MPI_COMM_NULL");
-  CHECK_ARGS(sendcounts == nullptr, MPI_ERR_ARG, "Iscatterv: param 2 sendcounts cannot be NULL");
-  CHECK_ARGS(displs == nullptr, MPI_ERR_ARG, "Iscatterv: param 3 displs cannot be NULL");
+  CHECK_ARGS((comm->rank() == root) && (sendcounts == nullptr), MPI_ERR_ARG,
+             "Iscatterv: param 2 sendcounts cannot be NULL on the root rank");
+  CHECK_ARGS((comm->rank() == root) && (displs == nullptr), MPI_ERR_ARG,
+             "Iscatterv: param 3 displs cannot be NULL on the root rank");
   CHECK_ARGS((comm->rank() == root) && (sendtype == MPI_DATATYPE_NULL), MPI_ERR_TYPE,
              "Iscatterv: The sendtype cannot be NULL on the root rank");
   CHECK_ARGS((recvbuf != MPI_IN_PLACE) && (recvtype == MPI_DATATYPE_NULL), MPI_ERR_TYPE,