+/* Copyright (c) 2012-2014. 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. */
+
#ifndef _SMPI_INTERFACE_H
#define _SMPI_INTERFACE_H
#include "smpi/smpi.h"
-/********** Tracing **********/
-/* from smpi_instr.c */
-void TRACE_smpi_alloc(void);
-void TRACE_smpi_release(void);
-void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation);
-void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
-void TRACE_smpi_send(int rank, int src, int dst);
-void TRACE_smpi_recv(int rank, int src, int dst);
-void TRACE_smpi_init(int rank);
-void TRACE_smpi_finalize(int rank);
+
/** \brief MPI collective description
*/
void *coll;
} s_mpi_coll_description_t, *mpi_coll_description_t;
+
+/** \ingroup MPI gather
+ * \brief The list of all available allgather collectives
+ */
+XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_gather_description[];
+XBT_PUBLIC_DATA(int (*mpi_coll_gather_fun)
+ (void *, int, MPI_Datatype, void *, int, MPI_Datatype,
+ int, MPI_Comm));
+
/** \ingroup MPI allgather
* \brief The list of all available allgather collectives
*/
(void *, int, MPI_Datatype, void *, int, MPI_Datatype,
MPI_Comm));
+/** \ingroup MPI allgather
+ * \brief The list of all available allgather collectives
+ */
+XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_allgatherv_description[];
+XBT_PUBLIC_DATA(int (*mpi_coll_allgatherv_fun)
+ (void *, int, MPI_Datatype, void *, int*, int*, MPI_Datatype,
+ MPI_Comm));
+
/** \ingroup MPI allreduce
* \brief The list of all available allgather collectives
(void *buf, void *rbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, MPI_Comm comm));
+/** \ingroup MPI reduce_scatter
+ * \brief The list of all available allgather collectives
+ */
+XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_reduce_scatter_description[];
+XBT_PUBLIC_DATA(int (*mpi_coll_reduce_scatter_fun)
+ (void *sbuf, void *rbuf, int *rcounts,
+ MPI_Datatype dtype, MPI_Op op,MPI_Comm comm));
+
+/** \ingroup MPI scatter
+ * \brief The list of all available allgather collectives
+ */
+XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_scatter_description[];
+XBT_PUBLIC_DATA(int (*mpi_coll_scatter_fun)
+ (void *sendbuf, int sendcount, MPI_Datatype sendtype,
+ void *recvbuf, int recvcount, MPI_Datatype recvtype,
+ int root, MPI_Comm comm));
+
+/** \ingroup MPI barrier
+ * \brief The list of all available allgather collectives
+ */
+XBT_PUBLIC_DATA(s_mpi_coll_description_t) mpi_coll_barrier_description[];
+XBT_PUBLIC_DATA(int (*mpi_coll_barrier_fun)
+ (MPI_Comm comm));
+
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 char *name);
-
-
+ char *name);
#endif /* _SMPI_INTERFAC_H */