Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Don't use local structure in PMPI_Waitall
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Mon, 15 Jan 2018 13:11:49 +0000 (14:11 +0100)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Mon, 15 Jan 2018 16:15:36 +0000 (17:15 +0100)
This is the same thing as two commits ago, but for
another function.

src/smpi/bindings/smpi_pmpi_request.cpp

index 84a929d..62e341c 100644 (file)
@@ -649,16 +649,16 @@ int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
   int retval = simgrid::smpi::Request::waitall(count, requests, status);
 
   for (int i = 0; i < count; i++) {
-    if(savedvals[i].valid){
+    MPI_Request req = requests[i];
+    if (req != MPI_REQUEST_NULL) {
       // the src may not have been known at the beginning of the recv (MPI_ANY_SOURCE)
-      int src_traced = savedvals[i].src;
-      int dst_traced = savedvals[i].dst;
-      int is_wait_for_receive = savedvals[i].recv;
+      int src_traced          = req->src();
+      int dst_traced          = req->dst();
+      int is_wait_for_receive = req->flags() & RECV;
       if (is_wait_for_receive) {
         if(src_traced==MPI_ANY_SOURCE)
-          src_traced = (status != MPI_STATUSES_IGNORE) ? savedvals[i].comm->group()->rank(status[i].MPI_SOURCE)
-                                                       : savedvals[i].src;
-        TRACE_smpi_recv(src_traced, dst_traced,savedvals[i].tag);
+          src_traced = (status != MPI_STATUSES_IGNORE) ? req->comm()->group()->rank(status[i].MPI_SOURCE) : req->src();
+        TRACE_smpi_recv(src_traced, dst_traced, req->tag());
       }
     }
   }