Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge msg_vm.c - adrien (please note that there is one line (destruction of the tx_pr...
[simgrid.git] / src / smpi / smpi_base.c
index 30bb6ab..8b60d82 100644 (file)
@@ -17,7 +17,7 @@
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_base, smpi, "Logging specific to SMPI (base)");
 
 
-static int match_recv(void* a, void* b, smx_action_t ignored) {
+static int match_recv(void* a, void* b, smx_synchro_t ignored) {
    MPI_Request ref = (MPI_Request)a;
    MPI_Request req = (MPI_Request)b;
    XBT_DEBUG("Trying to match a recv of src %d against %d, tag %d against %d",ref->src,req->src, ref->tag, req->tag);
@@ -39,7 +39,7 @@ static int match_recv(void* a, void* b, smx_action_t ignored) {
   }else return 0;
 }
 
-static int match_send(void* a, void* b,smx_action_t ignored) {
+static int match_send(void* a, void* b,smx_synchro_t ignored) {
    MPI_Request ref = (MPI_Request)a;
    MPI_Request req = (MPI_Request)b;
    XBT_DEBUG("Trying to match a send of src %d against %d, tag %d against %d",ref->src,req->src, ref->tag, req->tag);
@@ -75,8 +75,6 @@ double smpi_wtime_sleep = 0.0;
 double smpi_iprobe_sleep = 1e-4;
 double smpi_test_sleep = 1e-4;
 
-xbt_dict_t smpi_keyvals = NULL;
-int keyval_id=MPI_TAG_UB+1;//avoid collisions
 
 // Methods used to parse and store the values for timing injections in smpi
 // These are taken from surf/network.c and generalized to have more factors
@@ -351,7 +349,7 @@ void smpi_mpi_start(MPI_Request request)
     //We have to check both mailboxes (because SSEND messages are sent to the large mbox). begin with the more appropriate one : the small one.
       mailbox = smpi_process_mailbox_small();
       XBT_DEBUG("Is there a corresponding send already posted the small mailbox %p (in case of SSEND)?", mailbox);
-      smx_action_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request);
+      smx_synchro_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request);
     
       if(action ==NULL){
         mailbox = smpi_process_mailbox();
@@ -367,7 +365,7 @@ void smpi_mpi_start(MPI_Request request)
     }else{
       mailbox = smpi_process_mailbox_small();
       XBT_DEBUG("Is there a corresponding send already posted the small mailbox?");
-    smx_action_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request);
+    smx_synchro_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request);
     
       if(action ==NULL){
         XBT_DEBUG("No, nothing in the permanent receive mailbox");
@@ -424,7 +422,7 @@ void smpi_mpi_start(MPI_Request request)
     if (request->flags & RMA || request->size < sg_cfg_get_int("smpi/async_small_thres")) { // eager mode
       mailbox = smpi_process_remote_mailbox(receiver);
       XBT_DEBUG("Is there a corresponding recv already posted in the large mailbox %p?", mailbox);
-      smx_action_t action = simcall_comm_iprobe(mailbox, 1,request->dst, request->tag, &match_send, (void*)request);
+      smx_synchro_t action = simcall_comm_iprobe(mailbox, 1,request->dst, request->tag, &match_send, (void*)request);
       if(action ==NULL){
        if (! (request->flags & SSEND)){
          mailbox = smpi_process_remote_mailbox_small(receiver);
@@ -778,7 +776,7 @@ int smpi_mpi_testany(int count, MPI_Request requests[], int *index,
 
   *index = MPI_UNDEFINED;
   flag = 0;
-  comms = xbt_dynar_new(sizeof(smx_action_t), NULL);
+  comms = xbt_dynar_new(sizeof(smx_synchro_t), NULL);
   map = xbt_new(int, count);
   size = 0;
   for(i = 0; i < count; i++) {
@@ -929,7 +927,7 @@ int smpi_mpi_waitany(int count, MPI_Request requests[],
   index = MPI_UNDEFINED;
   if(count > 0) {
     // Wait for a request to complete
-    comms = xbt_dynar_new(sizeof(smx_action_t), NULL);
+    comms = xbt_dynar_new(sizeof(smx_synchro_t), NULL);
     map = xbt_new(int, count);
     size = 0;
     XBT_DEBUG("Wait for one of %d", count);
@@ -1590,70 +1588,3 @@ void smpi_mpi_exscan(void *sendbuf, void *recvbuf, int count,
   xbt_free(requests);
 }
 
-
-int smpi_keyval_create(MPI_Copy_function* copy_fn, MPI_Delete_function* delete_fn, int* keyval, void* extra_state){
-
-  if(!smpi_keyvals)
-  smpi_keyvals = xbt_dict_new();
-  
-  smpi_key_elem value = (smpi_key_elem) xbt_new0(s_smpi_mpi_key_elem_t,1);
-  
-  value->copy_fn=copy_fn;
-  value->delete_fn=delete_fn;
-  
-  *keyval = keyval_id;
-  
-  xbt_dict_set(smpi_keyvals,(const char*)keyval,(void*)value, NULL);
-  keyval_id++;
-  return MPI_SUCCESS;
-}
-
-int smpi_keyval_free(int* keyval){
-  smpi_key_elem elem = xbt_dict_get_or_null(smpi_keyvals, (const char*)keyval);
-  if(!elem)
-    return MPI_ERR_ARG;
-  xbt_dict_remove(smpi_keyvals, (const char*)keyval);
-  xbt_free(elem);
-  return MPI_SUCCESS;
-}
-
-int smpi_attr_delete(MPI_Comm comm, int keyval){
-  smpi_key_elem elem = xbt_dict_get_or_null(smpi_keyvals, (const char*)&keyval);
-  if(!elem)
-    return MPI_ERR_ARG;
-  if(elem->delete_fn!=MPI_NULL_DELETE_FN){
-    void * value;
-    int flag;
-    if(smpi_attr_get(comm, keyval, &value, &flag)==MPI_SUCCESS){
-      int ret = elem->delete_fn(comm, keyval, &value, &flag);
-      if(ret!=MPI_SUCCESS) return ret;
-    }
-  }  
-  return smpi_comm_attr_delete(comm, keyval);;
-}
-
-int smpi_attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag){
-  smpi_key_elem elem = xbt_dict_get_or_null(smpi_keyvals, (const char*)&keyval);
-  if(!elem)
-    return MPI_ERR_ARG;
-  return smpi_comm_attr_get(comm, keyval, attr_value, flag);;
-}
-
-int smpi_attr_put(MPI_Comm comm, int keyval, void* attr_value){
-
-  if(!smpi_keyvals)
-  smpi_keyvals = xbt_dict_new();
-  
-  smpi_key_elem elem = xbt_dict_get_or_null(smpi_keyvals, (const char*)&keyval);
-  if(!elem )
-    return MPI_ERR_ARG;
-  int flag;
-  void* value;
-  smpi_attr_get(comm, keyval, &value, &flag);
-  if(flag){
-    int ret = elem->delete_fn(comm, keyval, &value, &flag);
-    if(ret!=MPI_SUCCESS) return ret;
-  }
-  return smpi_comm_attr_put(comm, keyval, attr_value);;
-}
-