- if (comm == MPI_COMM_NULL)
- return MPI_ERR_COMM;
- if (sendcounts == nullptr || displs == nullptr)
- return MPI_ERR_ARG;
- if (((comm->rank() == root) && (sendtype == MPI_DATATYPE_NULL)) ||
- ((recvbuf != MPI_IN_PLACE) && (recvtype == MPI_DATATYPE_NULL)))
- return MPI_ERR_TYPE;
- if (request == nullptr)
- return MPI_ERR_ARG;
- if (recvbuf != MPI_IN_PLACE && recvcount < 0)
- return MPI_ERR_COUNT;
- if (root < 0 || root >= comm->size())
- return MPI_ERR_ROOT;
+ CHECK_ARGS(comm == MPI_COMM_NULL, MPI_ERR_COMM, "Iscatterv: the communicator cannot be MPI_COMM_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,
+ "Iscatterv: the recvtype cannot be NULL when not receiving in place");
+ CHECK_ARGS(request == nullptr, MPI_ERR_ARG, "Iscatterv: param 10 request cannot be NULL");
+ CHECK_ARGS(recvbuf != MPI_IN_PLACE && recvcount < 0, MPI_ERR_COUNT,
+ "Iscatterv: When not receiving in place, the recvcound cannot be negative");
+ CHECK_ARGS(root < 0, MPI_ERR_ROOT, "Iscatterv: root cannot be negative");
+ CHECK_ARGS(root >= comm->size(), MPI_ERR_ROOT, "Iscatterv: root (=%d) is larger than communicator size (=%d)", root,
+ comm->size());