Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[EXAMPLES] Added an example for the HostLoad plugin
[simgrid.git] / src / smpi / colls / gather-mvapich.cpp
index 2202b9e..b7574c1 100644 (file)
@@ -36,7 +36,6 @@
  */
 
 #include "colls_private.h"
-#include "src/smpi/smpi_group.hpp"
 
 #define MPIR_Gather_MV2_Direct smpi_coll_tuned_gather_ompi_basic_linear
 #define MPIR_Gather_MV2_two_level_Direct smpi_coll_tuned_gather_ompi_basic_linear
@@ -90,12 +89,12 @@ static int MPIR_pt_pt_intra_gather( void *sendbuf, int sendcnt, MPI_Datatype sen
 
 
     if (sendtype != MPI_DATATYPE_NULL) {
-        smpi_datatype_extent(sendtype, &true_lb,
+        sendtype->extent(&true_lb,
                                        &sendtype_true_extent);
     }
     if (recvtype != MPI_DATATYPE_NULL) {
-        recvtype_extent=smpi_datatype_get_extent(recvtype);
-        smpi_datatype_extent(recvtype, &true_lb,
+        recvtype_extent=recvtype->get_extent();
+        recvtype->extent(&true_lb,
                                        &recvtype_true_extent);
     }
     
@@ -149,11 +148,11 @@ int smpi_coll_tuned_gather_mvapich2_two_level(void *sendbuf,
     if(MV2_Gather_intra_node_function==NULL)
       MV2_Gather_intra_node_function=smpi_coll_tuned_gather_mpich;
     
-    if(smpi_comm_get_leaders_comm(comm)==MPI_COMM_NULL){
-      smpi_comm_init_smp(comm);
+    if(comm->get_leaders_comm()==MPI_COMM_NULL){
+      comm->init_smp();
     }
-    comm_size = smpi_comm_size(comm);
-    rank = smpi_comm_rank(comm);
+    comm_size = comm->size();
+    rank = comm->rank();
 
     if (((rank == root) && (recvcnt == 0)) ||
         ((rank != root) && (sendcnt == 0))) {
@@ -161,33 +160,33 @@ int smpi_coll_tuned_gather_mvapich2_two_level(void *sendbuf,
     }
 
     if (sendtype != MPI_DATATYPE_NULL) {
-        sendtype_extent=smpi_datatype_get_extent(sendtype);
-        sendtype_size=smpi_datatype_size(sendtype);
-        smpi_datatype_extent(sendtype, &true_lb,
+        sendtype_extent=sendtype->get_extent();
+        sendtype_size=sendtype->size();
+        sendtype->extent(&true_lb,
                                        &sendtype_true_extent);
     }
     if (recvtype != MPI_DATATYPE_NULL) {
-        recvtype_extent=smpi_datatype_get_extent(recvtype);
-        recvtype_size=smpi_datatype_size(recvtype);
-        smpi_datatype_extent(recvtype, &true_lb,
+        recvtype_extent=recvtype->get_extent();
+        recvtype_size=recvtype->size();
+        recvtype->extent(&true_lb,
                                        &recvtype_true_extent);
     }
 
     /* extract the rank,size information for the intra-node
      * communicator */
-    shmem_comm = smpi_comm_get_intra_comm(comm);
-    local_rank = smpi_comm_rank(shmem_comm);
-    local_size = smpi_comm_size(shmem_comm);
+    shmem_comm = comm->get_intra_comm();
+    local_rank = shmem_comm->rank();
+    local_size = shmem_comm->size();
     
     if (local_rank == 0) {
         /* Node leader. Extract the rank, size information for the leader
          * communicator */
-        leader_comm = smpi_comm_get_leaders_comm(comm);
+        leader_comm = comm->get_leaders_comm();
         if(leader_comm==MPI_COMM_NULL){
           leader_comm = MPI_COMM_WORLD;
         }
-        leader_comm_size = smpi_comm_size(leader_comm);
-        leader_comm_rank = smpi_comm_rank(leader_comm);
+        leader_comm_size = leader_comm->size();
+        leader_comm_rank = leader_comm->size();
     }
 
     if (rank == root) {
@@ -263,14 +262,14 @@ int smpi_coll_tuned_gather_mvapich2_two_level(void *sendbuf,
                                                  );
         }
     }
-    leader_comm = smpi_comm_get_leaders_comm(comm);
-    int* leaders_map = smpi_comm_get_leaders_map(comm);
-    leader_of_root = smpi_comm_group(comm)->rank(leaders_map[root]);
-    leader_root = smpi_comm_group(leader_comm)->rank(leaders_map[root]);
+    leader_comm = comm->get_leaders_comm();
+    int* leaders_map = comm->get_leaders_map();
+    leader_of_root = comm->group()->rank(leaders_map[root]);
+    leader_root = leader_comm->group()->rank(leaders_map[root]);
     /* leader_root is the rank of the leader of the root in leader_comm. 
      * leader_root is to be used as the root of the inter-leader gather ops 
      */
-    if (!smpi_comm_is_uniform(comm)) {
+    if (!comm->is_uniform()) {
         if (local_rank == 0) {
             int *displs = NULL;
             int *recvcnts = NULL;
@@ -302,7 +301,7 @@ int smpi_coll_tuned_gather_mvapich2_two_level(void *sendbuf,
                 }
             }
 
-            node_sizes = smpi_comm_get_non_uniform_map(comm);
+            node_sizes = comm->get_non_uniform_map();
 
             if (leader_comm_rank == leader_root) {
                 displs =  static_cast<int *>(xbt_malloc(sizeof (int) * leader_comm_size));
@@ -386,7 +385,7 @@ int smpi_coll_tuned_gather_mvapich2_two_level(void *sendbuf,
     }
     if ((local_rank == 0) && (root != rank)
         && (leader_of_root == rank)) {
-        smpi_mpi_send(leader_gather_buf,
+        Request::send(leader_gather_buf,
                                  nbytes * comm_size, MPI_BYTE,
                                  root, COLL_TAG_GATHER, comm);
     }
@@ -394,7 +393,7 @@ int smpi_coll_tuned_gather_mvapich2_two_level(void *sendbuf,
     if (rank == root && local_rank != 0) {
         /* The root of the gather operation is not the node leader. Receive
          y* data from the node leader */
-        smpi_mpi_recv(recvbuf, recvcnt * comm_size, recvtype,
+        Request::recv(recvbuf, recvcnt * comm_size, recvtype,
                                  leader_of_root, COLL_TAG_GATHER, comm,
                                  &status);
     }