Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines.
[simgrid.git] / src / smpi / colls / gather / gather-mvapich.cpp
index adeb3ce..ac80816 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2019. The SimGrid Team.
+/* Copyright (c) 2013-2021. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -38,9 +38,9 @@
 #include "../colls_private.hpp"
 #include <algorithm>
 
-#define MPIR_Gather_MV2_Direct Coll_gather_ompi_basic_linear::gather
-#define MPIR_Gather_MV2_two_level_Direct Coll_gather_ompi_basic_linear::gather
-#define MPIR_Gather_intra Coll_gather_mpich::gather
+#define MPIR_Gather_MV2_Direct gather__ompi_basic_linear
+#define MPIR_Gather_MV2_two_level_Direct gather__ompi_basic_linear
+#define MPIR_Gather_intra gather__mpich
 typedef int (*MV2_Gather_function_ptr) (const void *sendbuf,
     int sendcnt,
     MPI_Datatype sendtype,
@@ -52,9 +52,8 @@ typedef int (*MV2_Gather_function_ptr) (const void *sendbuf,
 extern MV2_Gather_function_ptr MV2_Gather_inter_leader_function;
 extern MV2_Gather_function_ptr MV2_Gather_intra_node_function;
 
-#define TEMP_BUF_HAS_NO_DATA (0)
-#define TEMP_BUF_HAS_DATA (1)
-
+#define TEMP_BUF_HAS_NO_DATA (false)
+#define TEMP_BUF_HAS_DATA (true)
 
 namespace simgrid{
 namespace smpi{
@@ -80,13 +79,9 @@ namespace smpi{
  *                      intra node gather function
  * errflag           - (out) to record errors
  */
-static int MPIR_pt_pt_intra_gather( const void *sendbuf, int sendcnt, MPI_Datatype sendtype,
-                            void *recvbuf, int recvcnt, MPI_Datatype recvtype,
-                            int root, int rank,
-                            void *tmp_buf, int nbytes,
-                            int is_data_avail,
-                            MPI_Comm comm,
-                            MV2_Gather_function_ptr intra_node_fn_ptr)
+static int MPIR_pt_pt_intra_gather(const void* sendbuf, int sendcnt, MPI_Datatype sendtype, void* recvbuf, int recvcnt,
+                                   MPI_Datatype recvtype, int root, int rank, void* tmp_buf, int nbytes,
+                                   bool is_data_avail, MPI_Comm comm, MV2_Gather_function_ptr intra_node_fn_ptr)
 {
     int mpi_errno = MPI_SUCCESS;
     MPI_Aint recvtype_extent = 0;  /* Datatype extent */
@@ -127,16 +122,16 @@ static int MPIR_pt_pt_intra_gather( const void *sendbuf, int sendcnt, MPI_Dataty
 
 
 
-int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
-                                            int sendcnt,
-                                            MPI_Datatype sendtype,
-                                            void *recvbuf,
-                                            int recvcnt,
-                                            MPI_Datatype recvtype,
-                                            int root,
-                                            MPI_Comm comm)
+int gather__mvapich2_two_level(const void *sendbuf,
+                               int sendcnt,
+                               MPI_Datatype sendtype,
+                               void *recvbuf,
+                               int recvcnt,
+                               MPI_Datatype recvtype,
+                               int root,
+                               MPI_Comm comm)
 {
-  unsigned char* leader_gather_buf = NULL;
+  unsigned char* leader_gather_buf = nullptr;
   int comm_size, rank;
   int local_rank, local_size;
   int leader_comm_rank = -1, leader_comm_size = 0;
@@ -147,11 +142,11 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
   MPI_Aint sendtype_extent = 0, recvtype_extent = 0; /* Datatype extent */
   MPI_Aint true_lb = 0, sendtype_true_extent = 0, recvtype_true_extent = 0;
   MPI_Comm shmem_comm, leader_comm;
-  unsigned char* tmp_buf = NULL;
+  unsigned char* tmp_buf = nullptr;
 
   // if not set (use of the algo directly, without mvapich2 selector)
-  if (MV2_Gather_intra_node_function == NULL)
-    MV2_Gather_intra_node_function = Coll_gather_mpich::gather;
+  if (MV2_Gather_intra_node_function == nullptr)
+    MV2_Gather_intra_node_function = gather__mpich;
 
   if (comm->get_leaders_comm() == MPI_COMM_NULL) {
     comm->init_smp();
@@ -227,9 +222,9 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
             } else {
               tmp_buf = smpi_get_tmp_sendbuffer(sendcnt * std::max(sendtype_extent, sendtype_true_extent) * local_size);
             }
-            if (tmp_buf == NULL) {
-                mpi_errno = MPI_ERR_OTHER;
-                return mpi_errno;
+            if (tmp_buf == nullptr) {
+              mpi_errno = MPI_ERR_OTHER;
+              return mpi_errno;
             }
         }
          /*while testing mpich2 gather test, we see that
@@ -273,8 +268,8 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
      */
     if (not comm->is_uniform()) {
       if (local_rank == 0) {
-        int* displs   = NULL;
-        int* recvcnts = NULL;
+        int* displs   = nullptr;
+        int* recvcnts = nullptr;
         int* node_sizes;
         int i = 0;
         /* Node leaders have all the data. But, different nodes can have
@@ -293,7 +288,7 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
             leader_gather_buf =
                 smpi_get_tmp_sendbuffer(sendcnt * std::max(sendtype_extent, sendtype_true_extent) * comm_size);
           }
-          if (leader_gather_buf == NULL) {
+          if (leader_gather_buf == nullptr) {
             mpi_errno = MPI_ERR_OTHER;
             return mpi_errno;
           }
@@ -318,7 +313,7 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
               recvcnts[i] = node_sizes[i] * recvcnt;
             }
           }
-          Colls::gatherv(tmp_buf, local_size * nbytes, MPI_BYTE, recvbuf, recvcnts, displs, recvtype, leader_root,
+          colls::gatherv(tmp_buf, local_size * nbytes, MPI_BYTE, recvbuf, recvcnts, displs, recvtype, leader_root,
                          leader_comm);
         } else {
           /* The root of the gather operation is not the node leader.
@@ -333,7 +328,7 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
               recvcnts[i] = node_sizes[i] * nbytes;
             }
           }
-          Colls::gatherv(tmp_buf, local_size * nbytes, MPI_BYTE, leader_gather_buf, recvcnts, displs, MPI_BYTE,
+          colls::gatherv(tmp_buf, local_size * nbytes, MPI_BYTE, leader_gather_buf, recvcnts, displs, MPI_BYTE,
                          leader_root, leader_comm);
         }
         if (leader_comm_rank == leader_root) {
@@ -350,9 +345,9 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
                 /* The root of the Gather operation is not a node-level leader
                  */
                 leader_gather_buf = smpi_get_tmp_sendbuffer(nbytes * comm_size);
-                if (leader_gather_buf == NULL) {
-                    mpi_errno = MPI_ERR_OTHER;
-                    return mpi_errno;
+                if (leader_gather_buf == nullptr) {
+                  mpi_errno = MPI_ERR_OTHER;
+                  return mpi_errno;
                 }
             }
             if (root == leader_of_root) {
@@ -389,12 +384,12 @@ int Coll_gather_mvapich2_two_level::gather(const void *sendbuf,
 
     /* check if multiple threads are calling this collective function */
     if (local_rank == 0 ) {
-        if (tmp_buf != NULL) {
-            smpi_free_tmp_buffer(tmp_buf);
-        }
-        if (leader_gather_buf != NULL) {
-            smpi_free_tmp_buffer(leader_gather_buf);
-        }
+      if (tmp_buf != nullptr) {
+        smpi_free_tmp_buffer(tmp_buf);
+      }
+      if (leader_gather_buf != nullptr) {
+        smpi_free_tmp_buffer(leader_gather_buf);
+      }
     }
 
     return (mpi_errno);