From: mquinson Date: Mon, 29 Jun 2009 09:26:49 +0000 (+0000) Subject: Make Waitall and Waitany visible from user side (and fix their prototype to stick... X-Git-Tag: SVN~1254 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5f758ee0ce7c9908ead65c3b6eb4229e55ee8a27?ds=sidebyside Make Waitall and Waitany visible from user side (and fix their prototype to stick to the standard) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6387 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/ChangeLog b/ChangeLog index 131ec516a5..3ff92c2ad9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,6 @@ SimGrid (3.3.1-svn) unstable; urgency=low SMPI: * Implement MPI_Waitany and MPI_Waitall - (not available from user side yet) -- Da SimGrid team diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index ce5fea7844..25a59ac2d9 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -95,9 +95,11 @@ SG_BEGIN_DECL() #define MPI_Send(a, b, c, d, e, f) SMPI_MPI_Send(a, b, c, d, e, f) #define MPI_Bcast(a, b, c, d, e) SMPI_MPI_Bcast(a, b, c, d, e) #define MPI_Wait(a, b) SMPI_MPI_Wait(a, b) +#define MPI_Waitall(a, b, c) SMPI_MPI_Waitall(a, b, c) +#define MPI_Waitany(a, b, c, d) SMPI_MPI_Waitany(a, b, c, d) #define MPI_Comm_split(a, b, c, d) SMPI_MPI_Comm_split(a, b, c, d) #define MPI_Wtime() SMPI_MPI_Wtime() -#define MPI_Reduce( a, b, c, d, e, f, g) SMPI_MPI_Reduce( a, b, c, d, e, f, g) +#define MPI_Reduce( a, b, c, d, e, f, g) SMPI_MPI_Reduce( a, b, c, d, e, f, g) // SMPI Functions XBT_PUBLIC(int) SMPI_MPI_Init(int *argc, char ***argv); @@ -121,11 +123,13 @@ XBT_PUBLIC(int) SMPI_MPI_Send(void *buf, int count, MPI_Datatype datatype, XBT_PUBLIC(int) SMPI_MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm); XBT_PUBLIC(int) SMPI_MPI_Wait(MPI_Request * request, MPI_Status * status); +XBT_PUBLIC(int) SMPI_MPI_Waitall(int count, MPI_Request requests[], MPI_Status status[]); +XBT_PUBLIC(int) SMPI_MPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status status[]); XBT_PUBLIC(int) SMPI_MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm * comm_out); XBT_PUBLIC(double) SMPI_MPI_Wtime(void); -XBT_PUBLIC(int) SMPI_MPI_Reduce(void *sendbuf, void *recvbuf, int count, +XBT_PUBLIC(int) SMPI_MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm); // smpi functions diff --git a/src/smpi/private.h b/src/smpi/private.h index 115b23f17a..68e04dd755 100644 --- a/src/smpi/private.h +++ b/src/smpi/private.h @@ -129,8 +129,8 @@ int smpi_mpi_barrier(smpi_mpi_communicator_t comm); int smpi_mpi_isend(smpi_mpi_request_t request); int smpi_mpi_irecv(smpi_mpi_request_t request); int smpi_mpi_wait(smpi_mpi_request_t request, smpi_mpi_status_t * status); -int smpi_mpi_wait_all(int count, smpi_mpi_request_t *requests, smpi_mpi_status_t **status); -int smpi_mpi_wait_any(int count, smpi_mpi_request_t *requests, int *index, smpi_mpi_status_t *status); +int smpi_mpi_waitall(int count, smpi_mpi_request_t requests[], smpi_mpi_status_t status[]); +int smpi_mpi_waitany(int count, smpi_mpi_request_t requests[], int *index, smpi_mpi_status_t status[]); void smpi_execute(double duration); void smpi_start_timer(void); diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index 9eee82fdd2..1392ec61a4 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -277,22 +277,22 @@ int smpi_mpi_wait(smpi_mpi_request_t request, smpi_mpi_status_t * status) return retval; } -int smpi_mpi_wait_all(int count, smpi_mpi_request_t *requests, smpi_mpi_status_t **status) { +int smpi_mpi_waitall(int count, smpi_mpi_request_t requests[], smpi_mpi_status_t status[]) { int cpt; int index; int retval; smpi_mpi_status_t stat; for (cpt=0; cpt