XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi);
-
/* PMPI User level calls */
extern "C" { // Obviously, the C MPI interface should use the C linkage
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_BCAST;
extra->root = root_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_collective_in(rank, __FUNCTION__, extra);
if (comm->size() > 1)
simgrid::smpi::Colls::bcast(buf, count, datatype, root, comm);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_GATHER;
extra->root = root_traced;
- int known = 0;
- extra->datatype1 = encode_datatype(sendtmptype, &known);
- int dt_size_send = 1;
- if (known == 0)
- dt_size_send = sendtmptype->size();
- extra->send_size = sendtmpcount * dt_size_send;
- extra->datatype2 = encode_datatype(recvtype, &known);
- int dt_size_recv = 1;
- if ((comm->rank() == root) && known == 0)
- dt_size_recv = recvtype->size();
- extra->recv_size = recvcount * dt_size_recv;
+
+ extra->datatype1 = encode_datatype(sendtmptype);
+ extra->send_size = sendtmptype->is_basic() ? sendtmpcount : sendtmpcount * sendtmptype->size();
+ extra->datatype2 = encode_datatype(recvtype);
+ extra->recv_size = recvtype->is_basic() ? recvcount : recvcount * recvtype->size();
TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
}
int rank = smpi_process()->index();
- int root_traced = comm->group()->index(root);
- int size = comm->size();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_GATHERV;
- extra->num_processes = size;
- extra->root = root_traced;
- int known = 0;
- extra->datatype1 = encode_datatype(sendtmptype, &known);
- int dt_size_send = 1;
- if (known == 0)
- dt_size_send = sendtype->size();
- extra->send_size = sendtmpcount * dt_size_send;
- extra->datatype2 = encode_datatype(recvtype, &known);
- int dt_size_recv = 1;
- if (known == 0)
- dt_size_recv = recvtype->size();
+ extra->num_processes = comm->size();
+ extra->root = comm->group()->index(root);
+
+ extra->datatype1 = encode_datatype(sendtmptype);
+ extra->send_size = sendtmptype->is_basic() ? sendtmpcount : sendtmpcount * sendtmptype->size();
+ extra->datatype2 = encode_datatype(recvtype);
+ int dt_size_recv = recvtype->is_basic() ? 1 : recvtype->size();
+
if (comm->rank() == root) {
- extra->recvcounts = xbt_new(int, size);
- for (int i = 0; i < size; i++) // copy data to avoid bad free
+ extra->recvcounts = new int[extra->num_processes];
+ for (int i = 0; i < extra->num_processes; i++) // copy data to avoid bad free
extra->recvcounts[i] = recvcounts[i] * dt_size_recv;
}
- TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
+ TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
retval = simgrid::smpi::Colls::gatherv(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcounts, displs, recvtype, root, comm);
TRACE_smpi_collective_out(rank);
}
int rank = smpi_process()->index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_ALLGATHER;
- 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_collective_in(rank, __FUNCTION__, extra);
sendtype=recvtype;
}
int rank = smpi_process()->index();
- int i = 0;
- int size = comm->size();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_ALLGATHERV;
- extra->num_processes = size;
- 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->recvcounts = xbt_new(int, size);
- for (i = 0; i < size; i++) // copy data to avoid bad free
+ extra->num_processes = comm->size();
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->send_size = sendtype->is_basic() ? sendcount : sendcount * sendtype->size();
+ extra->datatype2 = encode_datatype(recvtype);
+ int dt_size_recv = recvtype->is_basic() ? 1 : recvtype->size();
+
+ extra->recvcounts = new int[extra->num_processes];
+ for (int i = 0; i < extra->num_processes; i++) // copy data to avoid bad free
extra->recvcounts[i] = recvcounts[i] * dt_size_recv;
TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_SCATTER;
extra->root = root_traced;
- int known = 0;
- extra->datatype1 = encode_datatype(sendtype, &known);
- int dt_size_send = 1;
- if ((comm->rank() == root) && 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_collective_in(rank, __FUNCTION__, extra);
simgrid::smpi::Colls::scatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm);
recvcount = sendcounts[comm->rank()];
}
int rank = smpi_process()->index();
- int root_traced = comm->group()->index(root);
- int size = comm->size();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_SCATTERV;
- extra->num_processes = size;
- extra->root = root_traced;
- int known = 0;
- extra->datatype1 = encode_datatype(sendtype, &known);
- int dt_size_send = 1;
- if (known == 0)
- dt_size_send = sendtype->size();
+ extra->num_processes = comm->size();
+ extra->root = comm->group()->index(root);
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+ int dt_size_send = sendtype->is_basic() ? 1 : sendtype->size();
+ extra->recv_size = recvtype->is_basic() ? recvcount : recvcount * recvtype->size();
if (comm->rank() == root) {
- extra->sendcounts = xbt_new(int, size);
- for (int i = 0; i < size; i++) // copy data to avoid bad free
+ extra->sendcounts = new int[extra->num_processes];
+ for (int i = 0; i < extra->num_processes; i++) // copy data to avoid bad free
extra->sendcounts[i] = sendcounts[i] * 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_collective_in(rank, __FUNCTION__, extra);
retval = simgrid::smpi::Colls::scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, recvtype, root, comm);
retval = MPI_ERR_ARG;
} else {
int rank = smpi_process()->index();
- int root_traced = comm->group()->index(root);
+
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
+ extra->root = comm->group()->index(root);
extra->type = TRACING_REDUCE;
- 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->root = root_traced;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? count : count * datatype->size();
TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
int rank = smpi_process()->index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_ALLREDUCE;
- 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_collective_in(rank, __FUNCTION__, extra);
int rank = smpi_process()->index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_SCAN;
- 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_collective_in(rank, __FUNCTION__, extra);
int rank = smpi_process()->index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_EXSCAN;
- 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();
void* sendtmpbuf = sendbuf;
if (sendbuf == MPI_IN_PLACE) {
- sendtmpbuf = static_cast<void*>(xbt_malloc(count * datatype->size()));
- memcpy(sendtmpbuf, recvbuf, count * datatype->size());
+ sendtmpbuf = static_cast<void*>(xbt_malloc(extra->send_size));
+ memcpy(sendtmpbuf, recvbuf, extra->send_size);
}
TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
retval = MPI_ERR_ARG;
} else {
int rank = smpi_process()->index();
- int i = 0;
- int size = comm->size();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_REDUCE_SCATTER;
- extra->num_processes = size;
- 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 = 0;
- extra->recvcounts = xbt_new(int, size);
+ extra->num_processes = comm->size();
+ ;
+ extra->type = TRACING_EXSCAN;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->send_size = datatype->is_basic() ? 1 : datatype->size();
+
+ extra->recvcounts = new int[extra->num_processes];
int totalcount = 0;
- for (i = 0; i < size; i++) { // copy data to avoid bad free
- extra->recvcounts[i] = recvcounts[i] * dt_size_send;
+ for (int i = 0; i < extra->num_processes; i++) { // copy data to avoid bad free
+ extra->recvcounts[i] = recvcounts[i] * extra->send_size;
totalcount += recvcounts[i];
}
void* sendtmpbuf = sendbuf;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1);
extra->type = TRACING_REDUCE_SCATTER;
extra->num_processes = count;
- 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 = 0;
- extra->recvcounts = xbt_new(int, count);
- for (int i = 0; i < count; i++) // copy data to avoid bad free
+ extra->datatype1 = encode_datatype(datatype);
+ int dt_size_send = datatype->is_basic() ? 1 : datatype->size();
+ extra->send_size = 0;
+ extra->recvcounts = new int[extra->num_processes];
+ for (int i = 0; i < extra->num_processes; i++) // copy data to avoid bad free
extra->recvcounts[i] = recvcount * dt_size_send;
void* sendtmpbuf = sendbuf;
if (sendbuf == MPI_IN_PLACE) {
TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
- int* recvcounts = static_cast<int*>(xbt_malloc(count * sizeof(int)));
+ int* recvcounts = new int[count];
for (int i = 0; i < count; i++)
recvcounts[i] = recvcount;
simgrid::smpi::Colls::reduce_scatter(sendtmpbuf, recvbuf, recvcounts, datatype, op, comm);
- xbt_free(recvcounts);
+ delete[] recvcounts;
retval = MPI_SUCCESS;
TRACE_smpi_collective_out(rank);
sendtmptype = recvtype;
}
- int known = 0;
- extra->datatype1 = encode_datatype(sendtmptype, &known);
- if (known == 0)
- extra->send_size = sendtmpcount * sendtmptype->size();
- else
- extra->send_size = sendtmpcount;
- extra->datatype2 = encode_datatype(recvtype, &known);
- if (known == 0)
- extra->recv_size = recvcount * recvtype->size();
- else
- extra->recv_size = recvcount;
+ extra->datatype1 = encode_datatype(sendtmptype);
+ extra->send_size = sendtmptype->is_basic() ? sendtmpcount : sendtmpcount * sendtmptype->size();
+ extra->datatype2 = encode_datatype(recvtype);
+ extra->recv_size = recvtype->is_basic() ? recvcount : recvcount * recvtype->size();
TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
extra->type = TRACING_ALLTOALLV;
extra->send_size = 0;
extra->recv_size = 0;
- extra->recvcounts = xbt_new(int, size);
- extra->sendcounts = xbt_new(int, size);
- int known = 0;
- extra->datatype2 = encode_datatype(recvtype, &known);
- int dt_size_recv = recvtype->size();
+ extra->recvcounts = new int[size];
+ extra->sendcounts = new int[size];
+ extra->datatype2 = encode_datatype(recvtype);
+ int dt_size_recv = recvtype->is_basic() ? 1 : recvtype->size();
void* sendtmpbuf = static_cast<char*>(sendbuf);
int* sendtmpcounts = sendcounts;
sendtmptype = recvtype;
}
- extra->datatype1 = encode_datatype(sendtmptype, &known);
- int dt_size_send = sendtmptype->size();
+ extra->datatype1 = encode_datatype(sendtmptype);
+ int dt_size_send = sendtmptype->is_basic() ? 1 : sendtmptype->size();
for (i = 0; i < size; i++) { // copy data to avoid bad free
extra->send_size += sendtmpcounts[i] * dt_size_send;
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());
return MPI_CURRENT_TYPE;
}
-const char* encode_datatype(MPI_Datatype datatype, int* known)
+const char* encode_datatype(MPI_Datatype datatype)
{
- //default type for output is set to MPI_BYTE
- // MPI_DEFAULT_TYPE is not set for output, use directly MPI_BYTE
- if(known!=nullptr)
- *known=1;
if (datatype==MPI_BYTE)
return "";
if(datatype==MPI_DOUBLE)
return "4";
if(datatype==MPI_FLOAT)
return "5";
- //tell that the datatype is not handled by replay, and that its size should be measured and replayed as size*MPI_BYTE
- if(known!=nullptr)
- *known=0;
// default - not implemented.
// do not warn here as we pass in this function even for other trace formats
return "-1";
XBT_DEBUG("Initialize the counters");
CHECK_ACTION_PARAMS(action, 0, 1)
if(action[2])
- MPI_DEFAULT_TYPE=MPI_DOUBLE; // default MPE dataype
- else MPI_DEFAULT_TYPE= MPI_BYTE; // default TAU datatype
+ MPI_DEFAULT_TYPE = MPI_DOUBLE; // default MPE datatype
+ else
+ MPI_DEFAULT_TYPE = MPI_BYTE; // default TAU datatype
/* start a simulated timer */
smpi_process()->simulated_start();
extra->send_size = size;
extra->src = rank;
extra->dst = dst_traced;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
if (not TRACE_smpi_view_internals())
TRACE_smpi_send(rank, rank, dst_traced, 0, size*MPI_CURRENT_TYPE->size());
extra->send_size = size;
extra->src = rank;
extra->dst = dst_traced;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
if (not TRACE_smpi_view_internals())
TRACE_smpi_send(rank, rank, dst_traced, 0, size*MPI_CURRENT_TYPE->size());
- MPI_Request request = Request::isend(nullptr, size, MPI_CURRENT_TYPE, to, 0,MPI_COMM_WORLD);
+ MPI_Request request = Request::isend(nullptr, size, MPI_CURRENT_TYPE, to, 0, MPI_COMM_WORLD);
TRACE_smpi_ptp_out(rank);
extra->send_size = size;
extra->src = src_traced;
extra->dst = rank;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
//unknown size from the receiver point of view
extra->send_size = size;
extra->src = src_traced;
extra->dst = rank;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
MPI_Status status;
//unknow size from the receiver pov
extra->type = TRACING_BCAST;
extra->send_size = size;
extra->root = root_traced;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
void *sendbuf = smpi_get_tmp_sendbuffer(size* MPI_CURRENT_TYPE->size());
extra->type = TRACING_REDUCE;
extra->send_size = comm_size;
extra->comp_size = comp_size;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
extra->root = root_traced;
TRACE_smpi_collective_in(rank, __FUNCTION__,extra);
extra->type = TRACING_ALLREDUCE;
extra->send_size = comm_size;
extra->comp_size = comp_size;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
TRACE_smpi_collective_in(rank, __FUNCTION__,extra);
void *recvbuf = smpi_get_tmp_sendbuffer(comm_size* MPI_CURRENT_TYPE->size());
extra->type = TRACING_ALLTOALL;
extra->send_size = send_size;
extra->recv_size = recv_size;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
- extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
TRACE_smpi_collective_in(rank, __FUNCTION__,extra);
extra->send_size = send_size;
extra->recv_size = recv_size;
extra->root = root;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
- extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
TRACE_smpi_collective_in(smpi_process()->index(), __FUNCTION__, extra);
extra->recvcounts[i] = recvcounts[i];
extra->root = root;
extra->num_processes = comm_size;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
- extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
TRACE_smpi_collective_in(smpi_process()->index(), __FUNCTION__, extra);
extra->recvcounts= xbt_new(int, comm_size);
for(int i=0; i< comm_size; i++)//copy data to avoid bad free
extra->recvcounts[i] = recvcounts[i];
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
extra->comp_size = comp_size;
extra->num_processes = comm_size;
extra->type = TRACING_ALLGATHER;
extra->send_size = sendcount;
extra->recv_size= recvcount;
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
- extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
extra->num_processes = MPI_COMM_WORLD->size();
TRACE_smpi_collective_in(rank, __FUNCTION__,extra);
extra->recvcounts= xbt_new(int, comm_size);
for(int i=0; i< comm_size; i++)//copy data to avoid bad free
extra->recvcounts[i] = recvcounts[i];
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
- extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
extra->num_processes = comm_size;
TRACE_smpi_collective_in(rank, __FUNCTION__,extra);
extra->recv_size += recvcounts[i];
extra->recvcounts[i] = recvcounts[i];
}
- extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, nullptr);
- extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, nullptr);
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
TRACE_smpi_collective_in(rank, __FUNCTION__,extra);