Skip to content

Commit

Permalink
Merge pull request #775 from DARMA-tasking/774-irecv-test-right-away
Browse files Browse the repository at this point in the history
774 irecv test right away
  • Loading branch information
lifflander authored Apr 19, 2020
2 parents ffdaba8 + b5aadbf commit 62c85fd
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 9 deletions.
36 changes: 34 additions & 2 deletions src/vt/messaging/active.cc
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,16 @@ bool ActiveMessenger::recvDataMsgBuffer(
buf, num_probe_bytes, sender, req, user_buf, dealloc_user_buf, next,
priority
};
in_progress_data_irecv.emplace(std::move(recv_holder));

int recv_flag = 0;
MPI_Status recv_stat;
MPI_Test(&recv_holder.req, &recv_flag, &recv_stat);
if (recv_flag == 1) {
finishPendingDataMsgAsyncRecv(&recv_holder);
} else {
in_progress_data_irecv.emplace(std::move(recv_holder));
}

return true;
} else {
return false;
Expand Down Expand Up @@ -516,6 +525,13 @@ void ActiveMessenger::finishPendingDataMsgAsyncRecv(InProgressDataIRecv* irecv)
auto dealloc_user_buf = irecv->dealloc_user_buf;
auto next = irecv->next;

# if backend_check_enabled(trace_enabled)
if (ArgType::vt_trace_mpi) {
auto tr_note = fmt::format("DM Irecv completed: from={}", irecv->sender);
trace::addUserNote(tr_note);
}
# endif

auto dealloc_buf = [=]{
debug_print(
active, node,
Expand Down Expand Up @@ -790,7 +806,16 @@ bool ActiveMessenger::tryProcessIncomingActiveMsg() {
}

InProgressIRecv recv_holder{buf, num_probe_bytes, sender, req};
in_progress_active_msg_irecv.emplace(std::move(recv_holder));

int recv_flag = 0;
MPI_Status recv_stat;
MPI_Test(&recv_holder.req, &recv_flag, &recv_stat);
if (recv_flag == 1) {
finishPendingActiveMsgAsyncRecv(&recv_holder);
} else {
in_progress_active_msg_irecv.emplace(std::move(recv_holder));
}

return true;
} else {
return false;
Expand All @@ -802,6 +827,13 @@ void ActiveMessenger::finishPendingActiveMsgAsyncRecv(InProgressIRecv* irecv) {
auto num_probe_bytes = irecv->probe_bytes;
auto sender = irecv->sender;

# if backend_check_enabled(trace_enabled)
if (ArgType::vt_trace_mpi) {
auto tr_note = fmt::format("AM Irecv completed: from={}", irecv->sender);
trace::addUserNote(tr_note);
}
# endif

MessageType* msg = reinterpret_cast<MessageType*>(buf);
messageConvertToShared(msg);
auto base = promoteMsgOwner(msg);
Expand Down
7 changes: 0 additions & 7 deletions src/vt/messaging/irecv_holder.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,13 +118,6 @@ struct IRecvHolder {
continue;
}

# if backend_check_enabled(trace_enabled)
if (ArgType::vt_trace_mpi) {
auto tr_note = fmt::format("Irecv completed: from={}", stat.MPI_SOURCE);
trace::addUserNote(tr_note);
}
# endif

c(&e);
progress_made = true;
e.valid = false;
Expand Down

0 comments on commit 62c85fd

Please sign in to comment.