if (request == nullptr || *request == MPI_REQUEST_NULL) {
retval = MPI_ERR_REQUEST;
} else {
- (*request)->start();
+ MPI_Request req = *request;
+ int my_proc_id = (req->comm() != MPI_COMM_NULL) ? simgrid::s4u::this_actor::get_pid() : -1;
+ TRACE_smpi_comm_in(my_proc_id, __func__,
+ new simgrid::instr::Pt2PtTIData("Start", req->dst(),
+ req->size(),
+ req->tag(),
+ simgrid::smpi::Datatype::encode(req->type())));
+ if (not TRACE_smpi_view_internals() && req->flags() & SEND)
+ TRACE_smpi_send(my_proc_id, my_proc_id, getPid(req->comm(), req->dst()), req->tag(), req->size());
+
+ req->start();
+
+ if (not TRACE_smpi_view_internals() && req->flags() & RECV)
+ TRACE_smpi_recv(getPid(req->comm(), req->src()), my_proc_id, req->tag());
retval = MPI_SUCCESS;
+ TRACE_smpi_comm_out(my_proc_id);
}
smpi_bench_begin();
return retval;
}
}
if(retval != MPI_ERR_REQUEST) {
+ int my_proc_id = simgrid::s4u::this_actor::get_pid();
+ TRACE_smpi_comm_in(my_proc_id, __func__, new simgrid::instr::NoOpTIData("Startall"));
+ MPI_Request req = MPI_REQUEST_NULL;
+ if (not TRACE_smpi_view_internals())
+ for (int i = 0; i < count; i++) {
+ req = requests[i];
+ if (req->flags() & SEND)
+ TRACE_smpi_send(my_proc_id, my_proc_id, getPid(req->comm(), req->dst()), req->tag(), req->size());
+ }
+
simgrid::smpi::Request::startall(count, requests);
+
+ if (not TRACE_smpi_view_internals())
+ for (int i = 0; i < count; i++) {
+ req = requests[i];
+ if (req->flags() & RECV)
+ TRACE_smpi_recv(getPid(req->comm(), req->src()), my_proc_id, req->tag());
+ }
+ TRACE_smpi_comm_out(my_proc_id);
}
}
smpi_bench_begin();