Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make Waitall and Waitany visible from user side (and fix their prototype to stick...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 29 Jun 2009 09:26:49 +0000 (09:26 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 29 Jun 2009 09:26:49 +0000 (09:26 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6387 48e7efb5-ca39-0410-a469-dd3cf9ba447f

ChangeLog
include/smpi/smpi.h
src/smpi/private.h
src/smpi/smpi_base.c
src/smpi/smpi_mpi.c

index 131ec51..3ff92c2 100644 (file)
--- 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 <simgrid-devel@lists.gforge.inria.fr>
 
index ce5fea7..25a59ac 100644 (file)
@@ -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
index 115b23f..68e04dd 100644 (file)
@@ -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);
index 9eee82f..1392ec6 100644 (file)
@@ -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<count;cpt++) {
-               retval = smpi_mpi_wait_any(count,requests, &index,&stat);
+               retval = smpi_mpi_waitany(count,requests, &index,&stat);
                if (retval != MPI_SUCCESS)
                        return retval;
-               memcpy(status[index],&stat,sizeof(stat));
+               memcpy(&(status[index]),&stat,sizeof(stat));
        }
        return MPI_SUCCESS;
 }
 
-int smpi_mpi_wait_any(int count, smpi_mpi_request_t *requests, int *index, smpi_mpi_status_t *status) {
+int smpi_mpi_waitany(int count, smpi_mpi_request_t *requests, int *index, smpi_mpi_status_t *status) {
          int cpt;
 
          *index = MPI_UNDEFINED;
index 6713ba5..301a642 100644 (file)
@@ -186,6 +186,12 @@ int SMPI_MPI_Wait(MPI_Request * request, MPI_Status * status)
   return smpi_mpi_wait(*request, status);
 }
 
+int SMPI_MPI_Waitall(int count, MPI_Request requests[], MPI_Status status[]) {
+       return smpi_mpi_waitall(count, requests,status);
+}
+int SMPI_MPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status status[]) {
+       return smpi_mpi_waitany(count, requests, index,status);
+}
 /**
  * MPI_Bcast
  **/