Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2022.
[simgrid.git] / src / smpi / colls / barrier / barrier-ompi.cpp
index 0f4eec5..3d540de 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2017. The SimGrid Team.
+/* Copyright (c) 2013-2022. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #include "../colls_private.hpp"
 
 /*
- * Barrier is ment to be a synchronous operation, as some BTLs can mark
+ * Barrier is meant to be a synchronous operation, as some BTLs can mark
  * a request done before its passed to the NIC and progress might not be made
  * elsewhere we cannot allow a process to exit the barrier until its last
  * [round of] sends are completed.
 /*
  * Simple double ring version of barrier
  *
- * synchronous gurantee made by last ring of sends are synchronous
+ * synchronous guarantee made by last ring of sends are synchronous
  *
  */
-namespace simgrid{
-namespace smpi{
-int Coll_barrier_ompi_doublering::barrier(MPI_Comm comm)
+namespace simgrid {
+namespace smpi {
+int barrier__ompi_doublering(MPI_Comm comm)
 {
     int rank, size;
     int left, right;
@@ -59,40 +59,28 @@ int Coll_barrier_ompi_doublering::barrier(MPI_Comm comm)
     right = ((rank+1)%size);
 
     if (rank > 0) { /* receive message from the left */
-        Request::recv((void*)NULL, 0, MPI_BYTE, left,
-                                COLL_TAG_BARRIER, comm,
-                                MPI_STATUS_IGNORE);
+      Request::recv(nullptr, 0, MPI_BYTE, left, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
     }
 
     /* Send message to the right */
-    Request::send((void*)NULL, 0, MPI_BYTE, right,
-                            COLL_TAG_BARRIER,
-                             comm);
+    Request::send(nullptr, 0, MPI_BYTE, right, COLL_TAG_BARRIER, comm);
 
     /* root needs to receive from the last node */
     if (rank == 0) {
-        Request::recv((void*)NULL, 0, MPI_BYTE, left,
-                                COLL_TAG_BARRIER, comm,
-                                MPI_STATUS_IGNORE);
+      Request::recv(nullptr, 0, MPI_BYTE, left, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
     }
 
     /* Allow nodes to exit */
     if (rank > 0) { /* post Receive from left */
-        Request::recv((void*)NULL, 0, MPI_BYTE, left,
-                                COLL_TAG_BARRIER, comm,
-                                MPI_STATUS_IGNORE);
+      Request::recv(nullptr, 0, MPI_BYTE, left, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
     }
 
     /* send message to the right one */
-    Request::send((void*)NULL, 0, MPI_BYTE, right,
-                            COLL_TAG_BARRIER,
-                             comm);
+    Request::send(nullptr, 0, MPI_BYTE, right, COLL_TAG_BARRIER, comm);
 
     /* rank 0 post receive from the last node */
     if (rank == 0) {
-        Request::recv((void*)NULL, 0, MPI_BYTE, left,
-                                COLL_TAG_BARRIER, comm,
-                                MPI_STATUS_IGNORE);
+      Request::recv(nullptr, 0, MPI_BYTE, left, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
     }
 
     return MPI_SUCCESS;
@@ -104,7 +92,7 @@ int Coll_barrier_ompi_doublering::barrier(MPI_Comm comm)
  * To make synchronous, uses sync sends and sync sendrecvs
  */
 
-int Coll_barrier_ompi_recursivedoubling::barrier(MPI_Comm comm)
+int barrier__ompi_recursivedoubling(MPI_Comm comm)
 {
     int rank, size, adjsize;
     int mask, remote;
@@ -124,19 +112,13 @@ int Coll_barrier_ompi_recursivedoubling::barrier(MPI_Comm comm)
         if (rank >= adjsize) {
             /* send message to lower ranked node */
             remote = rank - adjsize;
-            Request::sendrecv(NULL, 0, MPI_BYTE, remote,
-                                                  COLL_TAG_BARRIER,
-                                                  NULL, 0, MPI_BYTE, remote,
-                                                  COLL_TAG_BARRIER,
-                                                  comm, MPI_STATUS_IGNORE);
+            Request::sendrecv(nullptr, 0, MPI_BYTE, remote, COLL_TAG_BARRIER, nullptr, 0, MPI_BYTE, remote,
+                              COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
 
         } else if (rank < (size - adjsize)) {
 
             /* receive message from high level rank */
-            Request::recv((void*)NULL, 0, MPI_BYTE, rank+adjsize,
-                                    COLL_TAG_BARRIER, comm,
-                                    MPI_STATUS_IGNORE);
-
+            Request::recv(nullptr, 0, MPI_BYTE, rank + adjsize, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
         }
     }
 
@@ -149,11 +131,8 @@ int Coll_barrier_ompi_recursivedoubling::barrier(MPI_Comm comm)
             if (remote >= adjsize) continue;
 
             /* post receive from the remote node */
-            Request::sendrecv(NULL, 0, MPI_BYTE, remote,
-                                                  COLL_TAG_BARRIER,
-                                                  NULL, 0, MPI_BYTE, remote,
-                                                  COLL_TAG_BARRIER,
-                                                  comm, MPI_STATUS_IGNORE);
+            Request::sendrecv(nullptr, 0, MPI_BYTE, remote, COLL_TAG_BARRIER, nullptr, 0, MPI_BYTE, remote,
+                              COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
         }
     }
 
@@ -162,10 +141,7 @@ int Coll_barrier_ompi_recursivedoubling::barrier(MPI_Comm comm)
         if (rank < (size - adjsize)) {
             /* send enter message to higher ranked node */
             remote = rank + adjsize;
-            Request::send((void*)NULL, 0, MPI_BYTE, remote,
-                                    COLL_TAG_BARRIER,
-                                     comm);
-
+            Request::send(nullptr, 0, MPI_BYTE, remote, COLL_TAG_BARRIER, comm);
         }
     }
 
@@ -178,7 +154,7 @@ int Coll_barrier_ompi_recursivedoubling::barrier(MPI_Comm comm)
  * To make synchronous, uses sync sends and sync sendrecvs
  */
 
-int Coll_barrier_ompi_bruck::barrier(MPI_Comm comm)
+int barrier__ompi_bruck(MPI_Comm comm)
 {
     int rank, size;
     int distance, to, from;
@@ -194,11 +170,8 @@ int Coll_barrier_ompi_bruck::barrier(MPI_Comm comm)
         to   = (rank + distance) % size;
 
         /* send message to lower ranked node */
-        Request::sendrecv(NULL, 0, MPI_BYTE, to,
-                                              COLL_TAG_BARRIER,
-                                              NULL, 0, MPI_BYTE, from,
-                                              COLL_TAG_BARRIER,
-                                              comm, MPI_STATUS_IGNORE);
+        Request::sendrecv(nullptr, 0, MPI_BYTE, to, COLL_TAG_BARRIER, nullptr, 0, MPI_BYTE, from, COLL_TAG_BARRIER,
+                          comm, MPI_STATUS_IGNORE);
     }
 
     return MPI_SUCCESS;
@@ -210,7 +183,7 @@ int Coll_barrier_ompi_bruck::barrier(MPI_Comm comm)
  * To make synchronous, uses sync sends and sync sendrecvs
  */
 /* special case for two processes */
-int Coll_barrier_ompi_two_procs::barrier(MPI_Comm comm)
+int barrier__ompi_two_procs(MPI_Comm comm)
 {
     int remote;
 
@@ -219,11 +192,8 @@ int Coll_barrier_ompi_two_procs::barrier(MPI_Comm comm)
                  "ompi_coll_tuned_barrier_ompi_two_procs rank %d", remote);
     remote = (remote + 1) & 0x1;
 
-    Request::sendrecv(NULL, 0, MPI_BYTE, remote,
-                                          COLL_TAG_BARRIER,
-                                          NULL, 0, MPI_BYTE, remote,
-                                          COLL_TAG_BARRIER,
-                                          comm, MPI_STATUS_IGNORE);
+    Request::sendrecv(nullptr, 0, MPI_BYTE, remote, COLL_TAG_BARRIER, nullptr, 0, MPI_BYTE, remote, COLL_TAG_BARRIER,
+                      comm, MPI_STATUS_IGNORE);
     return (MPI_SUCCESS);
 }
 
@@ -242,7 +212,7 @@ int Coll_barrier_ompi_two_procs::barrier(MPI_Comm comm)
 
 /* copied function (with appropriate renaming) starts here */
 
-int Coll_barrier_ompi_basic_linear::barrier(MPI_Comm comm)
+int barrier__ompi_basic_linear(MPI_Comm comm)
 {
     int i;
     int size = comm->size();
@@ -251,13 +221,9 @@ int Coll_barrier_ompi_basic_linear::barrier(MPI_Comm comm)
     /* All non-root send & receive zero-length message. */
 
     if (rank > 0) {
-        Request::send (NULL, 0, MPI_BYTE, 0,
-                                 COLL_TAG_BARRIER,
-                                  comm);
+      Request::send(nullptr, 0, MPI_BYTE, 0, COLL_TAG_BARRIER, comm);
 
-        Request::recv (NULL, 0, MPI_BYTE, 0,
-                                 COLL_TAG_BARRIER,
-                                 comm, MPI_STATUS_IGNORE);
+      Request::recv(nullptr, 0, MPI_BYTE, 0, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
     }
 
     /* The root collects and broadcasts the messages. */
@@ -267,17 +233,12 @@ int Coll_barrier_ompi_basic_linear::barrier(MPI_Comm comm)
 
         requests = new MPI_Request[size];
         for (i = 1; i < size; ++i) {
-            requests[i] = Request::irecv(NULL, 0, MPI_BYTE, MPI_ANY_SOURCE,
-                                     COLL_TAG_BARRIER, comm
-                                     );
+          requests[i] = Request::irecv(nullptr, 0, MPI_BYTE, i, COLL_TAG_BARRIER, comm);
         }
         Request::waitall( size-1, requests+1, MPI_STATUSES_IGNORE );
 
         for (i = 1; i < size; ++i) {
-            requests[i] = Request::isend(NULL, 0, MPI_BYTE, i,
-                                     COLL_TAG_BARRIER,
-                                      comm
-                                     );
+          requests[i] = Request::isend(nullptr, 0, MPI_BYTE, i, COLL_TAG_BARRIER, comm);
         }
         Request::waitall( size-1, requests+1, MPI_STATUSES_IGNORE );
         delete[] requests;
@@ -294,7 +255,7 @@ int Coll_barrier_ompi_basic_linear::barrier(MPI_Comm comm)
  * Another recursive doubling type algorithm, but in this case
  * we go up the tree and back down the tree.
  */
-int Coll_barrier_ompi_tree::barrier(MPI_Comm comm)
+int barrier__ompi_tree(MPI_Comm comm)
 {
     int rank, size, depth;
     int jump, partner;
@@ -312,13 +273,9 @@ int Coll_barrier_ompi_tree::barrier(MPI_Comm comm)
         partner = rank ^ jump;
         if (!(partner & (jump-1)) && partner < size) {
             if (partner > rank) {
-                Request::recv (NULL, 0, MPI_BYTE, partner,
-                                         COLL_TAG_BARRIER, comm,
-                                         MPI_STATUS_IGNORE);
+              Request::recv(nullptr, 0, MPI_BYTE, partner, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
             } else if (partner < rank) {
-                Request::send (NULL, 0, MPI_BYTE, partner,
-                                         COLL_TAG_BARRIER,
-                                          comm);
+              Request::send(nullptr, 0, MPI_BYTE, partner, COLL_TAG_BARRIER, comm);
             }
         }
     }
@@ -328,13 +285,9 @@ int Coll_barrier_ompi_tree::barrier(MPI_Comm comm)
         partner = rank ^ jump;
         if (!(partner & (jump-1)) && partner < size) {
             if (partner > rank) {
-                Request::send (NULL, 0, MPI_BYTE, partner,
-                                         COLL_TAG_BARRIER,
-                                          comm);
+              Request::send(nullptr, 0, MPI_BYTE, partner, COLL_TAG_BARRIER, comm);
             } else if (partner < rank) {
-                Request::recv (NULL, 0, MPI_BYTE, partner,
-                                         COLL_TAG_BARRIER, comm,
-                                         MPI_STATUS_IGNORE);
+              Request::recv(nullptr, 0, MPI_BYTE, partner, COLL_TAG_BARRIER, comm, MPI_STATUS_IGNORE);
             }
         }
     }