bool match = match_common(req, req, ref);
if (not match || ref->comm_ == MPI_COMM_UNINITIALIZED || ref->comm_->is_smp_comm())
return match;
bool match = match_common(req, req, ref);
if (not match || ref->comm_ == MPI_COMM_UNINITIALIZED || ref->comm_->is_smp_comm())
return match;
-
- if (ref->comm_->get_received_messages_count(ref->comm_->group()->rank(req->src_),
- ref->comm_->group()->rank(req->dst_), req->tag_) == req->message_id_) {
+ auto it = std::find(req->message_id_.begin(), req->message_id_.end(), ref->comm_->get_received_messages_count(ref->comm_->group()->rank(req->src_),
+ ref->comm_->group()->rank(req->dst_), req->tag_));
+ if (it != req->message_id_.end()) {
XBT_DEBUG("increasing count in comm %p, which was %u from pid %ld, to pid %ld with tag %d", ref->comm_,
ref->comm_->get_received_messages_count(ref->comm_->group()->rank(req->src_),
ref->comm_->group()->rank(req->dst_), req->tag_),
XBT_DEBUG("increasing count in comm %p, which was %u from pid %ld, to pid %ld with tag %d", ref->comm_,
ref->comm_->get_received_messages_count(ref->comm_->group()->rank(req->src_),
ref->comm_->group()->rank(req->dst_), req->tag_),
- XBT_DEBUG("Refusing to match message, as its ID is not the one I expect. in comm %p, %u != %u, "
+ XBT_DEBUG("Refusing to match message, as its ID is not the one I expect. in comm %p, %u, "
"from pid %ld to pid %ld, with tag %d",
ref->comm_,
ref->comm_->get_received_messages_count(ref->comm_->group()->rank(req->src_),
ref->comm_->group()->rank(req->dst_), req->tag_),
"from pid %ld to pid %ld, with tag %d",
ref->comm_,
ref->comm_->get_received_messages_count(ref->comm_->group()->rank(req->src_),
ref->comm_->group()->rank(req->dst_), req->tag_),
TRACE_smpi_send(src_, src_, dst_, tag_, size_);
this->print_request("New send");
TRACE_smpi_send(src_, src_, dst_, tag_, size_);
this->print_request("New send");
- message_id_=comm_->get_sent_messages_count(comm_->group()->rank(src_), comm_->group()->rank(dst_), tag_);
+ message_id_.push_back(comm_->get_sent_messages_count(comm_->group()->rank(src_), comm_->group()->rank(dst_), tag_));