Because MPI_Waitall uses MPI_Waitany, the latter used by itself (called directly from the user code) is not functional because we have no idea how to know that the other process in the initial nonblocking communication is also waiting on it. If not, we get a deadlock.
Perhaps the only other option is just tell the user straight-up that we do not propogate the critical path with this routine?
Because
MPI_Waitall
usesMPI_Waitany
, the latter used by itself (called directly from the user code) is not functional because we have no idea how to know that the other process in the initial nonblocking communication is also waiting on it. If not, we get a deadlock.Perhaps the only other option is just tell the user straight-up that we do not propogate the critical path with this routine?