]> AND Public Git Repository - simgrid.git/blobdiff - src/smpi/colls/alltoall/alltoall-pair-mpi-barrier.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
s4u::Actor: Merge signals on_migration_start/end into on_host_change
[simgrid.git] / src / smpi / colls / alltoall / alltoall-pair-mpi-barrier.cpp
index 2493ca433e69827c60926dddfbe69e14d1c270f0..2dcf9e330d213019d125fe8566cdab387c3d400d 100644 (file)
@@ -1,10 +1,10 @@
-/* Copyright (c) 2013-2014. The SimGrid Team.
+/* Copyright (c) 2013-2019. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#include "../colls_private.h"
+#include "../colls_private.hpp"
 /*****************************************************************************
 
  * Function: alltoall_pair_mpi_barrier
 /*****************************************************************************
 
  * Function: alltoall_pair_mpi_barrier
            phases, nodes in pair communicate their data. MPI barriers are
            inserted between each two phases.
 
            phases, nodes in pair communicate their data. MPI barriers are
            inserted between each two phases.
 
- * Auther: Ahmad Faraj
+ * Author: Ahmad Faraj
 
  ****************************************************************************/
 
  ****************************************************************************/
+namespace simgrid{
+namespace smpi{
 int
 int
-smpi_coll_tuned_alltoall_pair_mpi_barrier(void *send_buff, int send_count,
+Coll_alltoall_pair_mpi_barrier::alltoall(const void *send_buff, int send_count,
                                           MPI_Datatype send_type,
                                           void *recv_buff, int recv_count,
                                           MPI_Datatype recv_type, MPI_Comm comm)
                                           MPI_Datatype send_type,
                                           void *recv_buff, int recv_count,
                                           MPI_Datatype recv_type, MPI_Comm comm)
@@ -44,7 +46,7 @@ smpi_coll_tuned_alltoall_pair_mpi_barrier(void *send_buff, int send_count,
   num_procs = comm->size();
 
   if((num_procs&(num_procs-1)))
   num_procs = comm->size();
 
   if((num_procs&(num_procs-1)))
-    THROWF(arg_error,0, "alltoall pair algorithm can't be used with non power of two number of processes ! ");
+    throw std::invalid_argument("alltoall pair algorithm can't be used with non power of two number of processes!");
 
   send_chunk = send_type->get_extent();
   recv_chunk = recv_type->get_extent();
 
   send_chunk = send_type->get_extent();
   recv_chunk = recv_type->get_extent();
@@ -54,10 +56,12 @@ smpi_coll_tuned_alltoall_pair_mpi_barrier(void *send_buff, int send_count,
 
   for (i = 0; i < num_procs; i++) {
     src = dst = rank ^ i;
 
   for (i = 0; i < num_procs; i++) {
     src = dst = rank ^ i;
-    mpi_coll_barrier_fun(comm);
+    Colls::barrier(comm);
     Request::sendrecv(send_ptr + dst * send_chunk, send_count, send_type, dst,
                  tag, recv_ptr + src * recv_chunk, recv_count, recv_type,
                  src, tag, comm, &s);
   }
   return MPI_SUCCESS;
 }
     Request::sendrecv(send_ptr + dst * send_chunk, send_count, send_type, dst,
                  tag, recv_ptr + src * recv_chunk, recv_count, recv_type,
                  src, tag, comm, &s);
   }
   return MPI_SUCCESS;
 }
+}
+}