Skip to content

Improve multi-NIC performance in OFI netmod#7874

Open
mthyoung-amzn wants to merge 4 commits into
pmodels:mainfrom
mthyoung-amzn:many-nic-2
Open

Improve multi-NIC performance in OFI netmod#7874
mthyoung-amzn wants to merge 4 commits into
pmodels:mainfrom
mthyoung-amzn:many-nic-2

Conversation

@mthyoung-amzn

@mthyoung-amzn mthyoung-amzn commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Pull Request Description

This increases the maximum supported number of OFI NICs, and adds NUMA and bus topology awareness to NIC mapping across local ranks. The goal of the new NIC assignment logic is to ensure that only NICs attached to the rank's bound NUMA node is assigned, and to distribute load across connected busses by striping NICs by host bridge. This avoids cross-NUMA bottlenecks, and spreads load across PCIe busses attached to a given node.

Author Checklist

  • Provide Description
    Particularly focus on why, not what. Reference background, issues, test failures, xfail entries, etc.
  • Commits Follow Good Practice
    Commits are self-contained and do not do two things at once.
    Commit message is of the form: module: short description
    Commit message explains what's in the commit.
  • Passes All Tests
    Whitespace checker. Warnings test. Additional tests via comments.
  • Contribution Agreement
    For non-Argonne authors, check contribution agreement.
    If necessary, request an explicit comment from your companies PR approval manager.

New systems have tens of NICs per host. Increase the maximum NICs to 128
to future proof.
It is important to know a rank's position relative to other ranks that
coexist on the same NUMA node, to distribute attached resources and
maximize locality.

This adds a rudimentary shmem communication step at init to negotiate
package_rank among all local ranks.
It is sometimes useful to distribute IO resources across PCI bridges in
a system with deep PCIe topologies. This adds a function for determining
a device's parent node in the PCIe topology. This allows for assigning
IO resources by round robin across multiple host bridges, for instance.
@mthyoung-amzn
mthyoung-amzn force-pushed the many-nic-2 branch 2 times, most recently from a36bb42 to e5a8f4a Compare July 13, 2026 17:36
This enhances the NIC assignment to consider both NUMA locality, and
PCIe bus topology. The new approach attempts to assign NICs that are
attached directly to the rank's NUMA node, and across ranks that share a
NUMA node, does round-robin assignment of NICs across host bridges to
better distribute IO throughput.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant