Hi,

I'm actually working on tweaking OpenSM to achieve lower routing time on the 
Fat-Tree algorithm.

First question and an easy one:
By default with what optimization options is OpenSM compiled with? 
Without any specific options using git, there a no -O2 or such so all the 
inline functions are not inline which make a huge bad impact on performances 
(few millions calls to osm_switch_get_least_hops not inline consumes over 15% 
of computing time)

Next one and a bit harder:
In the Fat-Tree we have a 2D array for hop table (destination lid/port num). 
Why is this table allocated as we need and not all at once? And is it really 
necessary to check  each time if the lid we use is not greater than max_lid_ho ?
The only reason I would see for this is if a new node/switch with a bigger lid 
was added to the fabric while openSM is routing. In such a case, wouldn't a 
lock protect the variables so new lid can't appear/disappear while it 
calculates the routes ?
If yes, we could allocate all and skip a lot of checks. We have millions of 
calls to malloc and memset in osm_switch_set_hops plus tests in 
get_hops/get_least_hops. This may cost a bit more memory, but easily gain 15% 
on routing computation time.

Regards

Nicolas
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to