{
CHECK_COMM(8)
SET_BUF1(sendbuf)
- SET_BUF2(recvbuf)
int rank = comm->rank();
if(sendbuf != MPI_IN_PLACE){
CHECK_COUNT(2, sendcount)
CHECK_BUFFER(1,sendbuf, sendcount, sendtype)
}
if(rank == root){
+ SET_BUF2(recvbuf)
CHECK_NOT_IN_PLACE_ROOT(4, recvbuf)
CHECK_TYPE(6, recvtype)
CHECK_COUNT(5, recvcount)
{
CHECK_COMM(9)
SET_BUF1(sendbuf)
- SET_BUF2(recvbuf)
int rank = comm->rank();
if(sendbuf != MPI_IN_PLACE){
CHECK_TYPE(3, sendtype)
}
CHECK_BUFFER(1, sendbuf, sendcount, sendtype)
if(rank == root){
+ SET_BUF2(recvbuf)
CHECK_NOT_IN_PLACE_ROOT(4, recvbuf)
CHECK_TYPE(6, recvtype)
CHECK_NULL(5, MPI_ERR_COUNT, recvcounts)
aid_t pid = simgrid::s4u::this_actor::get_pid();
auto trace_recvcounts = std::make_shared<std::vector<int>>();
- trace_recvcounts->insert(trace_recvcounts->end(), &recvcounts[0], &recvcounts[comm->size()]);
+ if (rank == root)
+ trace_recvcounts->insert(trace_recvcounts->end(), &recvcounts[0], &recvcounts[comm->size()]);
TRACE_smpi_comm_in(pid, request == MPI_REQUEST_IGNORED ? "PMPI_Gatherv" : "PMPI_Igatherv",
new simgrid::instr::VarCollTIData(
MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request* request)
{
CHECK_COMM(8)
- SET_BUF1(sendbuf)
SET_BUF2(recvbuf)
int rank = comm->rank();
if(rank == root){
+ SET_BUF1(sendbuf)
CHECK_NOT_IN_PLACE_ROOT(1, sendbuf)
CHECK_COUNT(2, sendcount)
CHECK_TYPE(3, sendtype)
int PMPI_Iscatterv(const void* sendbuf, const int* sendcounts, const int* displs, MPI_Datatype sendtype, void* recvbuf, int recvcount,
MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request* request)
{
- SET_BUF1(sendbuf)
SET_BUF2(recvbuf)
CHECK_COMM(9)
int rank = comm->rank();
if(recvbuf != MPI_IN_PLACE){
- CHECK_NOT_IN_PLACE_ROOT(1, sendbuf)
CHECK_COUNT(5, recvcount)
CHECK_TYPE(7, recvtype)
CHECK_BUFFER(4, recvbuf, recvcount, recvtype)
CHECK_ROOT(9)
CHECK_REQUEST(10)
if (rank == root) {
+ SET_BUF1(sendbuf)
+ CHECK_NOT_IN_PLACE_ROOT(1, sendbuf)
CHECK_NULL(2, MPI_ERR_COUNT, sendcounts)
CHECK_NULL(3, MPI_ERR_ARG, displs)
CHECK_TYPE(4, sendtype)
aid_t pid = simgrid::s4u::this_actor::get_pid();
auto trace_sendcounts = std::make_shared<std::vector<int>>();
- trace_sendcounts->insert(trace_sendcounts->end(), &sendcounts[0], &sendcounts[comm->size()]);
+ if (rank == root)
+ trace_sendcounts->insert(trace_sendcounts->end(), &sendcounts[0], &sendcounts[comm->size()]);
TRACE_smpi_comm_in(pid, request == MPI_REQUEST_IGNORED ? "PMPI_Scatterv" : "PMPI_Iscatterv",
new simgrid::instr::VarCollTIData(
{
CHECK_COMM(7)
SET_BUF1(sendbuf)
- SET_BUF2(recvbuf)
int rank = comm->rank();
CHECK_TYPE(4, datatype)
CHECK_COUNT(3, count)
CHECK_BUFFER(1, sendbuf, count, datatype)
if(rank == root){
+ SET_BUF2(recvbuf)
CHECK_NOT_IN_PLACE(2, recvbuf)
CHECK_BUFFER(5, recvbuf, count, datatype)
}