On Mar 8, 2011, at 12:12 , Damien Guinier wrote:

> Hi Jeff

Sorry, your email went on the devel mailing list of Open MPI.

> I'm working on large message exchange optimization. My optimization consists 
> in "choosing
> the best protocol for each large message".
> In fact,
> - for each device, the way to chose the best protocol is different.
> - the faster protocol for a given device depends on that device hardware and 
> on the message
> specifications.
> 
> So the device/BTL itself is the best place to dynamically select the fastest 
> protocol.
> 
> Presently, for large messages, the protocol selection is only based on device 
> capabilities.
> My optimization consists in asking the device/BTL for a "preferred protocol" 
> and
> then make a choice based on :
>        - the device capabilities and the BTL's recommendation.

As a BTL will not randomly change its preferred protocol, one can assume it 
will depend on the peer. Here is a similar approach to one you describe in your 
email, but without modification of the BTL interface.

https://fs.hlrs.de/projects/eurompi2010/TALKS/WEDNESDAY_AFTERNOON/george_bosilca_locality_and_topology_aware.pdf

  george.



> 
> Technical view:
> The optimization is located in mca_pml_ob1_send_request_start_btl(), after 
> the device/btl selection.
> In the large message section, I call a new function :
>   mca_pml_ob1_preferred_protocol() => mca_bml_base_preferred_protocol()
> This one will try to launch
>   btl->btl_preferred_protocol()
> So, selecting a protocol before a large message in not in the critical path.
> It is the BTL's responsibility to define this function to select a preferred 
> protocol.
> 
> If this function is not defined, nothing changes in the code path
> To do this optimization , I had to add an interface to the btl module 
> structure in "btl.h", this is the drawback.
> 
> ----
> 
> I have already used this feature to optimize the "shared memory" device/BTL. 
> I use the "preferred_protocol" feature to enable/disable
> KNEM according to intra/inter socket communication. This optimization 
> increases a "IMB pingping benchmark" bandwidth by ~36%.
> 
> ----
> 
> The next step is now to use the "preferred protocol" feature with openib ( 
> with many IB cards)
> 
> 
> 
> Attached 2 patches:
> 1) BTL_preferred.patch:
>   introduces the new preferred protocol interface
> 2) SM_KNEM_intra_socket.patch:
>   defines the preferred protocol for the sm btl
>   Note: Since the "ess" framework can't give us the "socket locality
>         information", I used hitopo that has been proposed in an RFC
>         some times ago:
>         http://www.open-mpi.org/community/lists/devel/2010/11/8677.php
> 
> 
> 
> <BTL_preferred.path><SM_KNEM_intra_socket.patch>_______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

"I disapprove of what you say, but I will defend to the death your right to say 
it"
  -- Evelyn Beatrice Hall


Reply via email to