Jeff Squyres wrote:
WHAT: Changes to MPI layer modex API

WHY: To be mo' betta scalable

WHERE: ompi/mpi/runtime/ompi_module_exchange.* and everywhere that calls ompi_modex_send() and/or ompi_modex_recv()

TIMEOUT: COB Fri 4 Apr 2008

DESCRIPTION:

[...snip...]
* int ompi_modex_node_send(...): send modex data that is relevant for all processes in this job on this node. It is intended that only one process in a job on a node will call this function. If more than one process in a job on a node calls _node_send(), then only one will "win" (meaning that the data sent by the others will be overwritten).

* int ompi_modex_node_recv(...): receive modex data that is relevant for a whole peer node; receive the ["winning"] blob sent by _node_send() from the source node. We haven't yet decided what the node index will be; it may be (ompi_proc_t*) (i.e., _node_recv() would figure out what node the (ompi_proc_t*) resides on and then give you the data).

The above sounds like there could be race conditions if more than one process on a node is doing ompi_modex_node_send. That is are you really going to be able to be assured when ompi_modex_node_recv is done that one of the processes is not in the middle of doing ompi_modex_node_send? I assume there must be some sort of gate that allows you to make sure no one is in the middle of overwriting your data.

--td

Reply via email to