Skip to content

Add MoRI-EP/MoRI-IO test suite for MI300X + Broadcom Thor2 (RoCE) - #191

Open
raviguptaamd wants to merge 2 commits into
ROCm:developfrom
raviguptaamd:mori-thor2-tests
Open

Add MoRI-EP/MoRI-IO test suite for MI300X + Broadcom Thor2 (RoCE)#191
raviguptaamd wants to merge 2 commits into
ROCm:developfrom
raviguptaamd:mori-thor2-tests

Conversation

@raviguptaamd

Copy link
Copy Markdown
Contributor

What

Self-contained MoRI-EP (expert-parallel dispatch/combine) and MoRI-IO (RDMA KV transfer) test suite for AMD Instinct MI300X + Broadcom BCM57608 "Thor2" 400G RoCE, added under scripts/mori_test_mi300_thor2/.

Why

Native MoRI-EP internode was blocked on this NIC by two independent issues. Both are root-caused, documented, and fixed here.

The two fixes

  1. bnxt driver 235.2.86.0 — the 237/238 driver CQ path (setup_cq_hwqs/cq_timer) returns EIO on this firmware at bnxt_re_dv_create_cq; the 235 driver does not have that step. Driver-only, no firmware reflash.
  2. async_ll EP kernel — Thor2 has no PCIe atomic-completer capability (AtomicOpsCap: 32bit- 64bit-), so the default v1 kernel's RDMA AMO_ADD atomics into GPU VRAM hang. async_ll signals via RDMA WRITE+poll instead. (MoRI-IO always worked because it is pure RDMA WRITE.)

Contents

  • Portable Dockerfile (customer-handoff/) — FROM rocm/vllm-dev:..., builds MoRI from source (pinned 12d1bc32), applies the async_ll patch, and bakes the host v34 RDMA userspace so no runtime lib bind-mounts are needed.
  • collect_host_libs.sh — gathers the 5 host RDMA libs; explains the v34 vs v59 libibverbs ABI issue (the base image's v59 rejects the bnxt kernel ABI-8 provider → 0 RDMA devices).
  • build_mori.sh, apply_async_ll_patch.py, EP/IO pair-test runners.
  • ClusterSphere RDMA env recommender (from ROCm/dist-inf-cookbook) to confirm host libs/env per NIC.
  • Customer build guide (README) with a 4-rung verify ladder (ibv_devinfoib_write_bwimport mori → EP pair test) and an efficacy report.

Validated

  • MoRI-EP: 500/500 rounds, 0 errors, scaling EP2 → EP16.
  • MoRI-IO: ~48 GB/s host-mem write; ~373 Gb/s ib_write_bw (near 400G line rate).

Notes

  • Broadcom driver binaries are not redistributed here — see scripts/mori_test_mi300_thor2/driver-235.2.86.0/README.md for the Broadcom download link.
  • Host prerequisites: bnxt 235.2.86.0 driver installed + Docker Hub pull access to the base image + build-time internet for the MoRI clone (offline path documented).

🤖 Generated with Claude Code

Self-contained MoRI-EP (expert-parallel dispatch/combine) and MoRI-IO
(RDMA KV transfer) test suite for AMD Instinct MI300X + Broadcom BCM57608
"Thor2" 400G RoCE, under scripts/mori_test_mi300_thor2/.

Native MoRI-EP internode was blocked on this NIC by two independent issues,
both documented and fixed here:
  1. bnxt driver 235.2.86.0 — the 237/238 CQ path (setup_cq_hwqs/cq_timer)
     EIOs on this firmware at bnxt_re_dv_create_cq; 235 does not. Driver-only,
     no firmware reflash.
  2. async_ll EP kernel — Thor2 has no PCIe atomic-completer
     (AtomicOpsCap 32bit- 64bit-), so the default v1 kernel's VRAM AMO_ADD
     atomics hang. async_ll uses RDMA WRITE+poll instead.

Includes a portable Dockerfile (FROM rocm/vllm-dev:...), host RDMA lib
collection (v34 vs v59 ABI fix), MoRI source build pinned to 12d1bc32, the
async_ll vLLM patch, EP/IO pair-test runners, the ClusterSphere RDMA env
recommender, a customer build guide, and an efficacy report.

Broadcom driver binaries are not redistributed; see
driver-235.2.86.0/README.md for the download link.

Co-Authored-By: Claude <noreply@anthropic.com>
…l gitignore)

- THOR2-NIC-SETTINGS.html: device-level niccli NVM options + validated
  RoCEv2 fabric params (GID 3 / SL 3 / TC 104), host DCQCN/PFC QoS, and
  MoRI/NCCL/HSA env for the customer.
- MoRI-EP-Report.html: efficacy report (was force-needed; MAD root
  .gitignore excludes *.html).
No private data (no MACs, IPs, hostnames, credentials).

Co-Authored-By: Claude <noreply@anthropic.com>
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