Negative values can be used to trigger a probe in case of unknown receive size, but 0 is a legit value.
public:
/* communication partner; if we send, this is the receiver and vice versa */
int partner;
public:
/* communication partner; if we send, this is the receiver and vice versa */
int partner;
int tag;
MPI_Datatype datatype1;
int tag;
MPI_Datatype datatype1;
CHECK_ACTION_PARAMS(action, 3, 1)
partner = std::stoi(action[2]);
tag = std::stoi(action[3]);
CHECK_ACTION_PARAMS(action, 3, 1)
partner = std::stoi(action[2]);
tag = std::stoi(action[3]);
- size = parse_integer<size_t>(action[4]);
+ size = parse_integer<ssize_t>(action[4]);
datatype1 = parse_datatype(action, 5);
}
datatype1 = parse_datatype(action, 5);
}
MPI_Status status;
// unknown size from the receiver point of view
MPI_Status status;
// unknown size from the receiver point of view
- size_t arg_size = args.size;
- if (arg_size == 0) {
+ ssize_t arg_size = args.size;
+ if (arg_size < 0) {
Request::probe(args.partner, args.tag, MPI_COMM_WORLD, &status);
arg_size = status.count;
}
Request::probe(args.partner, args.tag, MPI_COMM_WORLD, &status);
arg_size = status.count;
}