- int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1;
- int dst_traced = comm->group()->index(dst);
- int src_traced = comm->group()->index(src);
- instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
- extra->type = TRACING_SENDRECV;
- extra->src = src_traced;
- extra->dst = dst_traced;
- int known=0;
- extra->datatype1 = encode_datatype(sendtype, &known);
- int dt_size_send = 1;
- if(known==0)
- dt_size_send = sendtype->size();
- extra->send_size = sendcount*dt_size_send;
- extra->datatype2 = encode_datatype(recvtype, &known);
- int dt_size_recv = 1;
- if(known==0)
- dt_size_recv = recvtype->size();
- extra->recv_size = recvcount*dt_size_recv;
-
- TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
- TRACE_smpi_send(rank, rank, dst_traced, sendtag,sendcount*sendtype->size());
-
- simgrid::smpi::Request::sendrecv(sendbuf, sendcount, sendtype, dst, sendtag, recvbuf, recvcount, recvtype, src, recvtag, comm,
- status);
- retval = MPI_SUCCESS;
-
- TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
- TRACE_smpi_recv(rank, src_traced, rank, recvtag);