Hi Maxim - Apologies for the delayed response, things have been very busy here.
We don't have any complete examples to offer, but can define the rules at a high level.
However, without an understanding of what the GASNet client code (e.g. Legion/librealm implementation) is doing it might be hard to apply them.
Basically, any pattern in which a blocking call to one library prevents necessary progress by the other can be a problem. For instance:
if (rank % 2) {
gex_Event_Wait(gex_AD_OpNB(...)); // where gex_AD_OpNB could be any active message round-trip
}
MPI_Barrier(); // ranks blocked here do not progress incoming GASNet Active Messages
Note that with multiple threads (with any given thread assigned to making GASNet or MPI calls, but not both), it becomes possible to reliably service both progress engines. So that might be the most reliable workaround.
The progress issue is conduit-independent.
There are also conduit-specific (and MPI implementation specific) resource contention/starvation risks - if you’re concerned about a particular combination we can discuss further.
Hope this helps..
-D
--
You received this message because you are subscribed to the Google Groups "gasnet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gasnet-users...@lbl.gov.
To view this discussion on the web visit https://groups.google.com/a/lbl.gov/d/msgid/gasnet-users/SA1PR09MB104769659BF8C81F348E315C6B3B1A%40SA1PR09MB10476.namprd09.prod.outlook.com.
I would be interested in a particular use case with the ucx and ibv conduits. Suppose there is a group of processes (e.g. processes 0 and 1) that uses exclusively MPI for communication (via a separate communicator), and another group (e.g. processes 2,3,4) that uses exclusively GASNet to exchange data at the same time, and that the first group (processes 0 and 1) never communicates with the second one (2,3,4). In this particular case there will never be a deadlock?
Another question about ucx. For all the fabrics that are supported by ucx : accessing the hardware resources (e.g. the network card) simultaneously from MPI and GASNet will never trigger a deadlock ?