Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix broken tests
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 6 Nov 2017 20:26:31 +0000 (21:26 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 6 Nov 2017 20:27:25 +0000 (21:27 +0100)
src/instr/instr_paje_events.cpp
src/instr/instr_private.hpp
src/smpi/bindings/smpi_pmpi_coll.cpp
src/smpi/bindings/smpi_pmpi_request.cpp

index d04a1f9..e10c4fc 100644 (file)
@@ -154,9 +154,9 @@ void StateEvent::print()
 
     if (extra_ != nullptr) {
       if (static_cast<instr_extra_data>(extra_)->sendcounts != nullptr)
-        xbt_free(static_cast<instr_extra_data>(extra_)->sendcounts);
+        delete[](static_cast<instr_extra_data>(extra_)->sendcounts);
       if (static_cast<instr_extra_data>(extra_)->recvcounts != nullptr)
-        xbt_free(static_cast<instr_extra_data>(extra_)->recvcounts);
+        delete[](static_cast<instr_extra_data>(extra_)->recvcounts);
       xbt_free(extra_);
     }
   } else if (instr_fmt_type == instr_fmt_TI) {
@@ -271,9 +271,9 @@ void StateEvent::print()
     fprintf(trace_file, "%s\n", stream.str().c_str());
 
     if (extra->recvcounts != nullptr)
-      xbt_free(extra->recvcounts);
+      delete[] extra->recvcounts;
     if (extra->sendcounts != nullptr)
-      xbt_free(extra->sendcounts);
+      delete[] extra->sendcounts;
     xbt_free(extra);
 
   } else {
index fdfd350..56d6089 100644 (file)
@@ -153,6 +153,7 @@ struct s_instr_extra_data_t {
   int* recvcounts;
   int num_processes;
 };
+
 typedef s_instr_extra_data_t* instr_extra_data;
 
 /* Format of TRACING output.
index 0e59749..e5a7089 100644 (file)
@@ -105,7 +105,7 @@ int PMPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype,void *recvbu
     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();
+    extra->recv_size = (comm->rank() != root || recvtype->is_basic()) ? recvcount : recvcount * recvtype->size();
 
     TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
 
@@ -284,7 +284,7 @@ int PMPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype,
     extra->root            = root_traced;
 
     extra->datatype1 = encode_datatype(sendtype);
-    extra->send_size = sendtype->is_basic() ? sendcount : sendcount * sendtype->size();
+    extra->send_size = (comm->rank() != root || sendtype->is_basic()) ? sendcount : sendcount * sendtype->size();
     extra->datatype2 = encode_datatype(recvtype);
     extra->recv_size = recvtype->is_basic() ? recvcount : recvcount * recvtype->size();
 
@@ -480,8 +480,8 @@ int PMPI_Exscan(void *sendbuf, void *recvbuf, int count, MPI_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(extra->send_size));
-      memcpy(sendtmpbuf, recvbuf, extra->send_size);
+      sendtmpbuf = static_cast<void*>(xbt_malloc(count * datatype->size()));
+      memcpy(sendtmpbuf, recvbuf, count * datatype->size());
     }
     TRACE_smpi_collective_in(rank, __FUNCTION__, extra);
 
@@ -666,7 +666,7 @@ int PMPI_Alltoallv(void* sendbuf, int* sendcounts, int* senddisps, MPI_Datatype
     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();
+    int dt_size_recv       = recvtype->size();
 
     void* sendtmpbuf         = static_cast<char*>(sendbuf);
     int* sendtmpcounts       = sendcounts;
@@ -691,7 +691,7 @@ int PMPI_Alltoallv(void* sendbuf, int* sendcounts, int* senddisps, MPI_Datatype
     }
 
     extra->datatype1 = encode_datatype(sendtmptype);
-    int dt_size_send = sendtmptype->is_basic() ? 1 : sendtmptype->size();
+    int dt_size_send = sendtmptype->size();
 
     for (i = 0; i < size; i++) { // copy data to avoid bad free
       extra->send_size += sendtmpcounts[i] * dt_size_send;
index 86c4ffe..601646f 100644 (file)
@@ -158,12 +158,11 @@ int PMPI_Irecv(void *buf, int count, MPI_Datatype datatype, int src, int tag, MP
   } else {
 
     int rank       = smpi_process()->index();
-    int src_traced = comm->group()->index(src);
 
     instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
-    extra->type = TRACING_IRECV;
-    extra->src = src_traced;
-    extra->dst = rank;
+    extra->type            = TRACING_IRECV;
+    extra->src             = comm->group()->index(src);
+    extra->dst             = rank;
     extra->datatype1       = encode_datatype(datatype);
     extra->send_size       = datatype->is_basic() ? count : count * datatype->size();
     TRACE_smpi_ptp_in(rank, __FUNCTION__, extra);
@@ -386,7 +385,7 @@ int PMPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MP
     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());
+    TRACE_smpi_send(rank, rank, dst_traced, tag, count * datatype->size());
 
     simgrid::smpi::Request::ssend(buf, count, datatype, dst, tag, comm);
     retval = MPI_SUCCESS;