Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add collectives for allgather, allreduce, bcast and reduce
[simgrid.git] / src / include / smpi / smpi_interface.h
1 #ifndef _SMPI_INTERFACE_H
2 #define _SMPI_INTERFACE_H
3 #include "smpi/smpi.h"
4
5 /********** Tracing **********/
6 /* from smpi_instr.c */
7 void TRACE_smpi_alloc(void);
8 void TRACE_smpi_release(void);
9 void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation);
10 void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
11 void TRACE_smpi_send(int rank, int src, int dst);
12 void TRACE_smpi_recv(int rank, int src, int dst);
13 void TRACE_smpi_init(int rank);
14 void TRACE_smpi_finalize(int rank);
15
16 /** \brief MPI collective description
17  */
18
19 typedef struct mpi_coll_description {
20   const char *name;
21   const char *description;
22   void *coll;
23 } s_mpi_coll_description_t, *mpi_coll_description_t;
24
25 /** \ingroup MPI allgather
26  *  \brief The list of all available allgather collectives
27  */
28 XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_allgather_description[];
29 XBT_PUBLIC_DATA(int (*mpi_coll_allgather_fun)
30                 (void *, int, MPI_Datatype, void *, int, MPI_Datatype,
31                  MPI_Comm));
32
33
34 /** \ingroup MPI allreduce
35  *  \brief The list of all available allgather collectives
36  */
37 XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_allreduce_description[];
38 XBT_PUBLIC_DATA(int (*mpi_coll_allreduce_fun)
39                 (void *sbuf, void *rbuf, int rcount, MPI_Datatype dtype,
40                  MPI_Op op, MPI_Comm comm));
41
42
43 /** \ingroup MPI alltoallcollectives
44  *  \brief The list of all available alltoall collectives
45  */
46 XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_alltoall_description[];
47 XBT_PUBLIC_DATA(int (*mpi_coll_alltoall_fun)
48                 (void *, int, MPI_Datatype, void *, int, MPI_Datatype,
49                  MPI_Comm));
50
51
52 /** \ingroup MPI bcast
53  *  \brief The list of all available bcast collectives
54  */
55 XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_bcast_description[];
56 XBT_PUBLIC_DATA(int (*mpi_coll_bcast_fun)
57                 (void *buf, int count, MPI_Datatype datatype, int root,
58                  MPI_Comm com));
59
60
61 /** \ingroup MPI reduce
62  *  \brief The list of all available reduce collectives
63  */
64 XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_reduce_description[];
65 XBT_PUBLIC_DATA(int (*mpi_coll_reduce_fun)
66                 (void *buf, void *rbuf, int count, MPI_Datatype datatype,
67                  MPI_Op op, int root, MPI_Comm comm));
68
69
70 XBT_PUBLIC(void) coll_help(const char *category,
71                            s_mpi_coll_description_t * table);
72 XBT_PUBLIC(int) find_coll_description(s_mpi_coll_description_t * table,
73                                       const char *name);
74
75
76 #endif                          /* _SMPI_INTERFAC_H */