Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merlin/hr_router: support user-defined portcontrol subcomponents #2424

Open
wants to merge 1 commit into
base: devel
Choose a base branch
from

Conversation

heyitsanthony
Copy link
Contributor

For my use-case, I wish to assign bandwidths to local ports different from router-to-router port bandwidths. Although a mechanism exists in hr_router to set heterogeneous port control parameters, it relies on topology logical groups, which is too coarse for assigning properties to local ports (and it's only really used by the dragonfly topology).

This patch checks for user-defined subcomponents on an hr_router's portcontrol slots during initialization and assigns them to the associated port. This is enough to override any port settings by setting the subcomponent on any router after building a topology in pymerlin.

Also includes a small unit-conversion fix for flit_size in portControl that turned up while testing.

For my use-case, I wish to assign bandwidths to local ports different
from router-to-router port bandwidths. Although a mechanism exists in
hr_router to set heterogeneous port control parameters, it relies on
topology logical groups, which is too coarse for assigning properties
to local ports (and it's only really used by the dragonfly topology).

This patch checks for user-defined subcomponents on an hr_router's
portcontrol slots during initialization and assigns them to the
associated port. This is enough to override any port settings by
setting the subcomponent on any router after building a topology
in pymerlin.

Also includes a small unit-conversion fix for flit_size in portControl
that turned up while testing.
@sst-autotester
Copy link
Contributor

Status Flag 'Pre-Test Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
NO INSPECTION HAS BEEN PERFORMED ON THIS PULL REQUEST! - This PR must be inspected by setting label 'AT: PRE-TEST INSPECTED'.

@feldergast
Copy link
Contributor

I will take a look at this later this week, but for the use case you describe (different bandwidth on local/endpoint ports), there is a simpler mechanism (assuming the local ports are lower bandwidth, which is probably a safe assumption). Each pair of ports that is connected will "negotiate" the final bandwidth used by the ports by exchanging the set bandwidths and using the lower of the two bandwidths. So, if you just set the bandwidth of the NICs to be the local bandwidth, those ports will negotiate down to that bandwidth and the routers will use the same bandwidth (again, assuming this bandwidth is lower than the router to router bandwidth). If you want to control other ports, than something more complex may be needed.

Copy link
Contributor

@feldergast feldergast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does this tie in with the Python modules (i.e. what does this look like in a normal configuration file)? Without support in the python module, I'm not sure how a user would be able to use the built-in topology generators.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants