#17 - Add RTX PRO 6000 benchmark YAMLs and baseline#162
Conversation
|
| Filename | Overview |
|---|---|
| src/engines/ibverbs/daqiri_ibverbs_engine.cpp | Priority constant corrected from 1,000,000 (silently truncates to 16960 in uint16_t) to 0, and the catch-all path upgraded from the removed 64-byte DrMatchBuf to the full DrMatchParam so the rule no longer fails with ENOMEM. |
| src/engines/socket/daqiri_socket_engine.cpp | set_packet_lengths now guards against negative lengths and validates against the endpoint's max_packet_size, preventing a silent negative-to-uint32_t wrap and catching oversized payloads before they corrupt the buffer. |
| examples/CMakeLists.txt | Registers eight new RTX PRO 6000 YAML configs for cmake install and adds ibverbs to the static-link engine loop — correct since daqiri_ibverbs is now a distinct target from daqiri_rdma. |
| examples/daqiri_bench_rdma_tx_rx_rtx_pro_6000.yaml | RoCE closed-loop config using socket_config.local_addr: roce:// endpoints; fixed YAML schema (no removed protocol:/remote_ip keys). Memory regions use host_pinned with correct numa affinity split. |
| examples/run_rtx_pro_bench.sh | New 855-line runner covering dpdk/dpdk-hds/rdma/ibverbs/socket-udp/socket-tcp backends; includes RoCE IP auto-setup/teardown with a trap on EXIT. Logic looks complete; references bench_capture_environment.sh which must already exist in examples/. |
| AGENTS.md | Benchmark table updated with all new RTX PRO 6000 YAML configs and the ibverbs RX / tx-only pair. |
| docs/benchmarks/raw_benchmarking.md | Adds RTX PRO 6000 tip block with config links, run commands, tx_phy_packets/rx_phy_packets verification note — mirrors the DGX Spark block in structure. |
| docs/tutorials/configuration-walkthrough.md | Decision tree extended with all eight new RTX PRO 6000 configs including ibverbs MPRQ, HDS, MQ, and RoCE entries. |
Reviews (8): Last reviewed commit: "#17 - Fix ibverbs catch-all flow steerin..." | Re-trigger Greptile
Partial #17: raw GPUDirect configs for RTX PRO 6000 Blackwell plus measured baseline on the dev box. No HDS, RoCE, FFT, or GEMM yet. Signed-off-by: Chloe Crozier <chloecrozier@gmail.com>
Adjust sw loopback IP placeholders; expand raw_benchmarking tip block. Signed-off-by: Chloe Crozier <chloecrozier@gmail.com>
6b83d46 to
694e527
Compare
Signed-off-by: Chloe Crozier <chloecrozier@gmail.com>
Fix three failure classes surfaced by wire closed-loop testing and add a multi-queue core/payload sweep with plotting. Signed-off-by: Chloe Crozier <chloecrozier@gmail.com>
…-bench Signed-off-by: Chloe Crozier <chloecrozier@gmail.com> # Conflicts: # AGENTS.md # examples/CMakeLists.txt # examples/bench_pipeline.cu # examples/bench_workload.cu # examples/bench_workload.h # examples/raw_bench_common.cpp # examples/raw_bench_common.h # examples/raw_gpudirect_bench.cpp # examples/raw_hds_bench.cpp # examples/rdma_bench.cpp # examples/socket_bench.cpp
The merge brought five RTX PRO 6000 example YAMLs (HDS, MQ base, ibverbs RX, TX-only, RoCE) into examples/ that lacked a leaf in the configuration walkthrough decision tree, failing scripts/check_doc_refs.py in the docs CI. Add a decision-tree entry for each so every shipped YAML is covered. Signed-off-by: Chloe Crozier <chloecrozier@gmail.com>
Add rtx_pro_discover.py to pick PIX-linked CUDA ordinals per NIC and isolcpus-based poll cores from topology. Wire discovery into the MQ and single-backend runners, split multi-queue TX across two GPUs, default RoCE workload-max-inflight, and add run_rtx_pro_suite.sh for the standard RTX PRO sweep. Signed-off-by: ccrozier <ccrozier@nvidia.com>
Use priority 0 for the mlx5dv_dr catch-all matcher so the uint16_t priority does not truncate and rule creation no longer fails with ENOMEM during daqiri_init. Also pin the RTX PRO ibverbs RX hugepage region to NUMA node 0. Signed-off-by: ccrozier <ccrozier@nvidia.com>
Addresses #17
RTX PRO 6000 raw/RoCE/socket benchmarks, now validated over a real wire closed-loop (two ConnectX-7 400G ports cabled together) with a multi-queue core-scaling sweep and plots.
What this PR adds / fixes
Bug fixes (found via wire testing):
affinity: 1), faulting the context and stalling RX.rx_count_workernow binds to the RX buffer's device before workload init (fixes bothdpdkanddpdk-hdsfft/gemm on the wire).protocol:/remote_ipkeys withsocket_config.local_addr: roce://…on one connected subnet.parse_rdma_dropsinteger bug, and scoped the "RX too low" stall guard to raw packet backends (RDMA/socket move large messages).New tooling:
(TX,RX)core-scaling base YAML +gen_rtx_pro_mq_config.py+run_rtx_pro_mq_bench.sh(sweeps payload × core cells).scripts/plot_rtx_pro_bench.py— pure-stdlib SVG plots (white background), no matplotlib dependency.run_rtx_pro_push_400g.sh— batch / host_pinned / dual-loop experiments toward line rate.Results (wire closed-loop, 15 s/cell)
Memory kind (same cable, 8 KB):
deviceGPUDirect 216 Gbps vshost_pinned384 Gbps (~96% of 400G) — the GPUDirect RX DMA path, not the NIC/PCIe (Gen5 x16), is the current ceiling.Core scaling × payload (GPUDirect RX Gb/s):
Extra RX cores ~2× small-packet throughput; at jumbo all cells converge to link-limited ~215 Gbps.
How to run