extra->type = TRACING_IRECV;
extra->src = src_traced;
extra->dst = rank;
- int known=0;
- extra->datatype1 = encode_datatype(datatype, &known);
- int dt_size_send = 1;
- if(known==0)
- dt_size_send = datatype->size();
- extra->send_size = count*dt_size_send;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? count : count * datatype->size();
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
*request = simgrid::smpi::Request::irecv(buf, count, datatype, src, tag, comm);
extra->type = TRACING_ISEND;
extra->src = rank;
extra->dst = dst_traced;
- int known=0;
- extra->datatype1 = encode_datatype(datatype, &known);
- int dt_size_send = 1;
- if(known==0)
- dt_size_send = datatype->size();
- extra->send_size = count*dt_size_send;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? count : count * datatype->size();
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, tag, count*datatype->size());
extra->type = TRACING_ISSEND;
extra->src = rank;
extra->dst = dst_traced;
- int known=0;
- extra->datatype1 = encode_datatype(datatype, &known);
- int dt_size_send = 1;
- if(known==0)
- dt_size_send = datatype->size();
- extra->send_size = count*dt_size_send;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? count : count * datatype->size();
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, tag, count*datatype->size());
extra->type = TRACING_RECV;
extra->src = src_traced;
extra->dst = rank;
- int known = 0;
- extra->datatype1 = encode_datatype(datatype, &known);
- int dt_size_send = 1;
- if (known == 0)
- dt_size_send = datatype->size();
- extra->send_size = count * dt_size_send;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? count : count * datatype->size();
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
simgrid::smpi::Request::recv(buf, count, datatype, src, tag, comm, status);
extra->type = TRACING_SEND;
extra->src = rank;
extra->dst = dst_traced;
- int known = 0;
- extra->datatype1 = encode_datatype(datatype, &known);
- int dt_size_send = 1;
- if (known == 0) {
- dt_size_send = datatype->size();
- }
- extra->send_size = count*dt_size_send;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? count : count * datatype->size();
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
if (not TRACE_smpi_view_internals()) {
TRACE_smpi_send(rank, rank, dst_traced, tag,count*datatype->size());
extra->type = TRACING_SSEND;
extra->src = rank;
extra->dst = dst_traced;
- int known = 0;
- extra->datatype1 = encode_datatype(datatype, &known);
- int dt_size_send = 1;
- if(known == 0) {
- dt_size_send = datatype->size();
- }
- extra->send_size = count*dt_size_send;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? count : count * datatype->size();
+
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, tag,count*datatype->size());
} else if((sendtag<0 && sendtag != MPI_ANY_TAG)||(recvtag<0 && recvtag != MPI_ANY_TAG)){
retval = MPI_ERR_TAG;
} else {
-
int rank = smpi_process()->index();
int dst_traced = comm->group()->index(dst);
int src_traced = comm->group()->index(src);
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;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->send_size = sendtype->is_basic() ? sendcount : sendcount * sendtype->size();
+ extra->datatype2 = encode_datatype(recvtype);
+ extra->recv_size = recvtype->is_basic() ? recvcount : recvcount * recvtype->size();
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, sendtag, sendcount * sendtype->size());