From 1cecc204a88a65f9f0c4a97627fc7ff159fed3a2 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Sat, 6 Dec 2014 03:00:14 +0100 Subject: [PATCH] Revert "Avoid using simcalls here, as by descheduling the process, we could misplace some messages in mailboxes, and end up deadlocking." This reverts commit 63ba498484d4fcfc706be1e514d7fedbc6c9f4be. --- src/smpi/smpi_base.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index 57ae7e0b0f..e76bdc1c3b 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -349,14 +349,16 @@ 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 in the small mailbox %p (in case of SSEND)?", mailbox); - smx_synchro_t action = SIMIX_comm_iprobe(SIMIX_process_self(), mailbox, 0, request->src,request->tag, &match_recv, (void*)request); + XBT_DEBUG("Is there a corresponding send already posted the small mailbox %p (in case of SSEND)?", mailbox); + smx_synchro_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request); if(action ==NULL){ mailbox = smpi_process_mailbox(); XBT_DEBUG("No, nothing in the small mailbox test the other one : %p", mailbox); - action = SIMIX_comm_iprobe(SIMIX_process_self(), mailbox, 0, request->src,request->tag, &match_recv, (void*)request); + action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request); if(action ==NULL){ XBT_DEBUG("Still nothing, switch back to the small mailbox : %p", mailbox); + XBT_DEBUG("Still notching, switch back to the small mailbox : %p", mailbox); mailbox = smpi_process_mailbox_small(); } }else{ @@ -365,7 +367,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_synchro_t action = SIMIX_comm_iprobe(SIMIX_process_self(), 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"); @@ -422,7 +424,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_synchro_t action = SIMIX_comm_iprobe(SIMIX_process_self(), 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); @@ -430,7 +432,7 @@ void smpi_mpi_start(MPI_Request request) } else{ mailbox = smpi_process_remote_mailbox_small(receiver); XBT_DEBUG("SSEND : Is there a corresponding recv already posted in the small mailbox %p?", mailbox); - action = SIMIX_comm_iprobe(SIMIX_process_self(), mailbox, 1,request->dst, request->tag, &match_send, (void*)request); + action = simcall_comm_iprobe(mailbox, 1,request->dst, request->tag, &match_send, (void*)request); if(action ==NULL){ XBT_DEBUG("No, we are first, send to large mailbox"); mailbox = smpi_process_remote_mailbox(receiver); -- 2.20.1