Marc Cooper
2017-04-20 04:14:23 UTC
Hi,
I am trying to understand how connections are established among MPI ranks.
Pardon for the list of questions.
1) Is there a global data structure that creates and stores rank to network
address (uri or port number) mapping
2) How is the location of an MPI rank is determined in point-to-point
operations such as MPI_Send. Logically, given a rank, there has to be a
look-up to get its address and pass this information to lower levels to use
a send operation with this destination address using appropriate network
protocol.
3) Are the connections among ranks pre-established when a communicator is
created or are they established on-demand. Where exactly in the source code
is this connection created (I'm tracking ompi_mpi_init(), so think it must
be in orte_init(), not sure though).
4) Does the communicator attribute (c_keyhash) store this mapping
information, or is this totally different?
Best,
Marc
I am trying to understand how connections are established among MPI ranks.
Pardon for the list of questions.
1) Is there a global data structure that creates and stores rank to network
address (uri or port number) mapping
2) How is the location of an MPI rank is determined in point-to-point
operations such as MPI_Send. Logically, given a rank, there has to be a
look-up to get its address and pass this information to lower levels to use
a send operation with this destination address using appropriate network
protocol.
3) Are the connections among ranks pre-established when a communicator is
created or are they established on-demand. Where exactly in the source code
is this connection created (I'm tracking ompi_mpi_init(), so think it must
be in orte_init(), not sure though).
4) Does the communicator attribute (c_keyhash) store this mapping
information, or is this totally different?
Best,
Marc