- send_size += real_sendcounts[i] * dt_size_send;
- trace_sendcounts->push_back(real_sendcounts[i] * dt_size_send);
+ send_size += real_sendcounts[i] ;
+ recv_size += recvcounts[i];
+ if (((recvdispls[i] + recvcounts[i]) * dt_size_recv) > maxsize)
+ maxsize = (recvdispls[i] + recvcounts[i]) * dt_size_recv;
+ }
+ real_sendbuf = smpi_get_in_place_buf(sendbuf, recvbuf, tmp_sendbuf, maxsize, MPI_CHAR);
+
+ if(recvtype->size() * recvcounts[comm->rank()] != real_sendtype->size() * real_sendcounts[comm->rank()]){
+ XBT_WARN("MPI_(I)Alltoallv : receive size from me differs from sent size to me : %zu vs %zu", recvtype->size() * recvcounts[comm->rank()], real_sendtype->size() * real_sendcounts[comm->rank()]);
+ return MPI_ERR_TRUNCATE;