#include "private.h"
#include "xbt/time.h"
+#include "mc/mc.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_base, smpi,
"Logging specific to SMPI (base)");
print_request("New send", request);
mailbox = smpi_process_remote_mailbox(request->dst);
request->action = SIMIX_req_comm_isend(mailbox, request->size, -1.0,
- request->buf, request->size, &match_send, request);
+ request->buf, request->size, &match_send, request, 0);
#ifdef HAVE_TRACING
SIMIX_req_set_category (request->action, TRACE_internal_smpi_get_category());
#endif
status->MPI_SOURCE = req->src;
status->MPI_TAG = req->tag;
status->MPI_ERROR = MPI_SUCCESS;
- status->count = SIMIX_req_comm_get_dst_buff_size(req->action);
+ status->count = req->size;
}
- SIMIX_req_comm_destroy(req->action);
print_request("Finishing", req);
if(req->flags & NON_PERSISTENT) {
smpi_mpi_request_free(request);
MPI_Status stat;
MPI_Status *pstat = status == MPI_STATUS_IGNORE ? MPI_STATUS_IGNORE : &stat;
- c = count;
- while(c > 0) {
- index = smpi_mpi_waitany(count, requests, pstat);
- if(index == MPI_UNDEFINED) {
- break;
+ for(c = 0; c < count; c++) {
+ if(MC_IS_ENABLED) {
+ smpi_mpi_wait(&requests[c], pstat);
+ index = c;
+ } else {
+ index = smpi_mpi_waitany(count, requests, pstat);
+ if(index == MPI_UNDEFINED) {
+ break;
+ }
}
if(status != MPI_STATUS_IGNORE) {
- memcpy(&status[index], pstat, sizeof *pstat);
+ memcpy(&status[index], pstat, sizeof(*pstat));
}
- c--;
}
}