mirror of
https://github.com/deepseek-ai/DeepEP.git
synced 2026-11-05 00:47:32 +00:00
[PR #748] [CLOSED] [HybridEP] Report RDMA memory registration failures #755
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/DeepEP#755
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/deepseek-ai/DeepEP/pull/748
Author: @janbernloehr
Created: 9/11/2026
Status: ❌ Closed
Base:
main← Head:fix/hybridep-rdma-registration-errors📝 Commits (10+)
c9f647dAdd HybridEP (#420)6ad6896add document of Hybrid-EP (#428)476ad70[Feature] Support normal mode for non-nvlink environment (#375)e713f52fix issue with align, recover format for csrc/kernels/internode.cu and (#431)c5a3e9bAdd Jit compiler (#433)f4f2c10add permute/unpermute, add sync free, refactor (#439)85fba86Jershi/fp4 intranode ready (#339)0ed15b5fix bug on token drop (#443)1242eb4Decouple the dispatch and buffer allocation on hybrid-ep (#448)3f601f7Improve Jit (#457)📊 Changes
65 files changed (+21907 additions, -216 deletions)
View changed files
➕
.gitmodules(+4 -0)📝
README.md(+13 -0)📝
csrc/config.hpp(+26 -0)📝
csrc/deep_ep.cpp(+620 -52)📝
csrc/deep_ep.hpp(+69 -7)➕
csrc/hybrid_ep/allocator/allocator.cu(+212 -0)➕
csrc/hybrid_ep/allocator/allocator.cuh(+63 -0)➕
csrc/hybrid_ep/backend/NCCL_LICENSE.txt(+38 -0)➕
csrc/hybrid_ep/backend/hybrid_ep_backend.cuh(+6112 -0)➕
csrc/hybrid_ep/backend/ibvcore.h(+271 -0)➕
csrc/hybrid_ep/backend/topo_detection.cuh(+1657 -0)➕
csrc/hybrid_ep/buffer/internode.cuh(+15 -0)➕
csrc/hybrid_ep/buffer/internode_doca.cu(+971 -0)➕
csrc/hybrid_ep/buffer/internode_doca.cuh(+190 -0)➕
csrc/hybrid_ep/buffer/internode_nixl.cu(+272 -0)➕
csrc/hybrid_ep/buffer/internode_nixl.cuh(+57 -0)➕
csrc/hybrid_ep/buffer/intranode.cu(+453 -0)➕
csrc/hybrid_ep/buffer/intranode.cuh(+90 -0)➕
csrc/hybrid_ep/buffer/nixl_connector.cu(+934 -0)➕
csrc/hybrid_ep/buffer/nixl_connector.h(+146 -0)...and 45 more files
📄 Description
Motivation
The HybridEP DOCA backend currently assumes that every
ibv_reg_mrcall succeeds. If GPU memory registration fails, the returned null pointer is dereferenced later while constructing remote-memory metadata. This produces a generic segmentation fault and loses the originalerrno, making failures such as unavailable peer-memory support, an incompatible HCA, or insufficient memlock limits difficult to diagnose.Changes
ibv_reg_mr.errno, andRLIMIT_MEMLOCKvalues before terminating.ibv_reg_mrpath and the absence of a DMA-BUF registration fallback.This change improves error reporting only; it does not add DMA-BUF registration support.
Performance impact
There are no changes to dispatch, combine, or training hot paths. The wrapper is inline and is used only during one-time RDMA buffer initialization. On success, its only additional work is a null check after the existing
ibv_reg_mrcall.Testing
git diff --checkibv_reg_mrcall ininternode_doca.cu.5321d809e095d6dd32a1355a5d4aa2ebbda4ba74.nvidia_peermem. The new diagnostic consistently reportedibv_reg_mrfailure forcombine.rdma_intra_node_red_token(117,440,512 bytes) on the rank-selected HCA witherrno=14 (Bad address)and unlimited soft/hardRLIMIT_MEMLOCK, then aborted before the null memory-region pointer could be dereferenced.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.