PLUGINS/UCX: Improve the performance by specifying memory type in sendAm(). - #2057
Conversation
memory type in sendAm(). Signed-off-by: ZhenlongMa <zhenlongm@nvidia.com>
|
👋 Hi ZhenlongMa! Thank you for contributing to ai-dynamo/nixl. Your PR reviewers will review your contribution then trigger the CI to test your changes. 🚀 |
|
/build |
|
/ok to test 88a2db3 |
|
/build |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Enterprise Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe UCX active-message send path now declares the request memory type and sets AM payload memory to host memory while preserving existing flags and callback behavior. ChangesUCX AM memory configuration
Estimated code review effort: 1 (Trivial) | ~2 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
🤖 CI Triage Agent — TL;DR: The "Run CPP tests" stage hit its Jenkins wall-clock timeout at test 159/203 because the Full analysisSummary: Jenkins stage "Run CPP tests" (node 176) was aborted by a stage Root cause: Not a hang — the log shows continuous per-test progress with no multi-minute gaps. It is a genuine slowdown: the Implicated commit: PR #2057 ( File: Suggested fix: Review the Related: #2057
|
|
🤖 CI Triage Agent — TL;DR: The "Run CPP tests" stage was killed (exit 143) at 15:20 because the gtest suite didn't finish in time — the Full analysisSummary: Jenkins Root cause: The gtest suite ran with Implicated commit: Most likely File: Suggested fix: Speed up / parallelize the CPP test run instead of raising the timeout:
Related: #1906 (threadpool engine refactor), #2040 (single UCX connection per handle), #2044/#2045 (UCX in-flight transfer release changes); no existing issue specifically tracks the |
What?
This PR improves the performance of NIXL by specifying memory type in sendAm().
Why?
Each nixlbench batch triggers a notification (in postXfer function). The notification calls sendAm without providing mh or memory type, in which case UCX must detect the memory type of the notification buffer in ucp_memory_detect_internal.
If memtype cache is NULL, ucp_memory_detect_internal enters the slow path and then queries all possible memory domians, including CUDA memory, which introduces significant overhead.
Below is the experiment result with block size of 1024B:
Summary by CodeRabbit