[openib-general] MPI Brodcast doubt

Dotan Barak dotanb at dev.mellanox.co.il
Tue Sep 5 05:26:33 PDT 2006


Hal Rosenstock wrote:
> John,
>
> On Mon, 2006-09-04 at 08:56, john t wrote:
>   
>> Hi,
>>  
>> I have 3 nodes connected via IB as shown below:
>>  
>> node1 ---> switch1 ---> node2
>>                     |----------> node3
>>  
>> If node1 sends a brodcast message to node2 and node3, I want to know
>> if the message is delivered to the switch twice (first time for node2
>> and second time for node3) or just once (where switch will know by
>> looking at some headers or so that its a brodcast message and will
>> send it on all the outgoing ports) ?
>>     
>
> Assuming nodes 1, 2, and 3 are part of the same multicast group, the
> multicast send is sent once from node 1. When received at the switch, it
> is replicated to all ports which have members in the same group (in this
> case, nodes 2 and 3). The switch knows by the header (specifically the
> LRH:DLID which is a multicast LID) and uses the MulticastForwardingTable
> to determine on which ports to forward it. However, IB multicast is
> unreliable so to create reliable multicast, it is sometimes "emulated"
> in that the sender tracks the group members and may use serial unicast
> sends or augment a multicast send with unicast sends to the receivers
> and track their acknowledgements of receipt.
>
> -- Hal
>   
All of the above is true for IB multicast (there isn't any broadcast in IB).

If the question was "what happens when one send a message using 
MPI_broadcast?"
then the answer will be: it depends on the MPI implementation.
I know that in MVAPICH the MPI handles the duplications by itself by default
(and the switch will get two messages and not one).
There is an option in that MPI to use IB multicast but it is disabled by 
default.

Dotan




More information about the general mailing list