Hello everyone,
I got one question regarding the multi-VCI support and possible locking
contentions of MPICH on multi-threaded environments.
I understand that there is a direct mapping between a VCI and a
communicator, so global locking is avoided on a multi-threaded application.
But I wanted to know: how do these VCIs work? When I have N VCIs, do I have
N virtual channels per rank (thus, one global lock per VCI-rank pair) or
only 2 channels at all (one lock per VCI)? I was wondering if, for example,
two MPI_Sends targeting different ranks on the same comm might need to be
synchronized using such a global lock.
Thanks for the help!
Guilherme Valarini