#291 - Hardware-Based Packet Reordering - #290
Open
cliffburdick wants to merge 1 commit into
Open
Conversation
Contributor
|
| Filename | Overview |
|---|---|
| src/engines/ibverbs/daqiri_ibverbs_engine.cpp | Implements mlx5 direct-placement setup, completion aggregation, slot ownership, and rearming for hardware reorder. |
| src/engines/ibverbs/daqiri_ibverbs_engine.h | Adds the state and helper declarations needed for direct-placement queues and aggregate lifecycle management. |
| include/daqiri/types.h | Exposes hardware/software reorder selection, cyclic-sequence acknowledgement, and packet-size configuration while retaining software reorder as the default. |
| src/common.cpp | Parses and validates the new reorder configuration fields. |
| python/daqiri_common_pybind.cpp | Exposes the new reorder configuration fields through the Python bindings. |
| docs/tutorials/configuration-walkthrough.md | Documents hardware reorder configuration and now links to the correct walkthrough anchor. |
Reviews (7): Last reviewed commit: "#291 - Add hardware packet reordering" | Re-trigger Greptile
cliffburdick
force-pushed
the
cburdick/hw-reorder-host-cqe-test
branch
5 times, most recently
from
September 5, 2026 00:07
32c6291 to
740ebe1
Compare
Signed-off-by: Cliff Burdick <cburdick@nvidia.com>
cliffburdick
force-pushed
the
cburdick/hw-reorder-host-cqe-test
branch
from
September 5, 2026 00:10
740ebe1 to
1d082f3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces hardware-based packet reordering for supported cyclic sequence-number patterns. Rather than launching a GPU kernel to reorder packets, the ibverbs engine uses the mlx5 flex parser and flow steering to place each payload directly into its final CPU- or GPU-memory slot. The host CPU polls CQEs and publishes an aggregate only after every packet in the batch has arrived.
Hardware reorder is explicit opt-in (
reorder_engine: hw) and requirescyclic_sequence: true. The sampled 32-bit destination value must cycle over the configured finite output ring; wide monotonic sequence values should continue usingreorder_engine: sw, which remains the default.Direct-placement ownership is tied to burst lifetime: each fixed slot has one receive credit, and DAQIRI does not rearm any slot in an aggregate while the returned burst is ready or application-owned. Freeing the burst publishes one replacement credit for every destination in that batch.
Requirements and validation:
origin/main(7385da5).DAQIRI_ENGINE="dpdk ibverbs"passes.The hardware path has not yet been validated on DGX Spark/GB10.