Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add new entry in Release_Notes.
[simgrid.git] / src / smpi / include / smpi_coll.hpp
index dd8faa7..786a5e8 100644 (file)
@@ -1,5 +1,5 @@
 /* High level handling of collective algorithms */
-/* Copyright (c) 2009-2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2009-2023. 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. */
@@ -15,8 +15,6 @@
 #define COLL_DEFS(cat, ret, args, args2)                                                                               \
   extern int(*cat) args;
 
-#define COLL_SIG(cat, ret, args, args2) int cat args;
-
 #define COLL_UNPAREN(...)  __VA_ARGS__
 #define COLL_APPLY(action, sig, name) action(sig, name)
 
@@ -48,8 +46,7 @@
 #define COLL_BARRIER_SIG barrier, int,                                                                                 \
     (MPI_Comm comm)
 
-namespace simgrid {
-namespace smpi {
+namespace simgrid::smpi {
 
 struct s_mpi_coll_description_t {
   std::string name;
@@ -58,10 +55,9 @@ struct s_mpi_coll_description_t {
 };
 
 namespace colls {
-XBT_PUBLIC void coll_help(const char* category, s_mpi_coll_description_t* table);
-XBT_PUBLIC int find_coll_description(s_mpi_coll_description_t* table, const std::string& name, const char* desc);
 void set_collectives();
-XBT_PUBLIC s_mpi_coll_description_t* get_smpi_coll_description(const char* name, int rank);
+XBT_PUBLIC std::vector<s_mpi_coll_description_t>* get_smpi_coll_descriptions(const std::string& name);
+std::string get_smpi_coll_help();
 
 void set_gather(const std::string& name);
 void set_allgather(const std::string& name);
@@ -75,7 +71,7 @@ void set_bcast(const std::string& name);
 void set_alltoall(const std::string& name);
 void set_alltoallv(const std::string& name);
 
-// for each collective type, create the set_* prototype, the description array and the function pointer
+// for each collective type, create the function pointer
 //  extern int(*gather)(const void *send_buff, int send_count, MPI_Datatype send_type, void *recv_buff, int recv_count,
 //                      MPI_Datatype recv_type, int root, MPI_Comm comm);
 COLL_APPLY(COLL_DEFS, COLL_GATHER_SIG, "")
@@ -304,8 +300,9 @@ int reduce__automatic(const void *buf, void *rbuf, int count, MPI_Datatype datat
 int reduce_scatter__default(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
 int reduce_scatter__ompi(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
 int reduce_scatter__ompi_basic_recursivehalving(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
-int reduce_scatter__ompi_ring(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
 int reduce_scatter__mpich(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
+int reduce_scatter__ompi_ring(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
+int reduce_scatter__ompi_butterfly(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
 int reduce_scatter__mpich_pair(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
 int reduce_scatter__mpich_rdb(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
 int reduce_scatter__mpich_noncomm(const void *sbuf, void *rbuf, const int *rcounts, MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm);
@@ -316,6 +313,7 @@ int reduce_scatter__automatic(const void *sbuf, void *rbuf, const int *rcounts,
 int scatter__default(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
 int scatter__ompi(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
 int scatter__ompi_basic_linear(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
+int scatter__ompi_linear_nb(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
 int scatter__ompi_binomial(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
 int scatter__mpich(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
 int scatter__mvapich2(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
@@ -339,6 +337,5 @@ int barrier__mvapich2 (MPI_Comm comm);
 int barrier__impi(MPI_Comm comm);
 int barrier__automatic(MPI_Comm comm);
 
-}
-}
+} // namespace simgrid::smpi
 #endif