Synchronize MST edge count update - #3130
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
AI Agent AnalysisI verified that #3125 is already present in the failing environment and fixes a different stream-ordering bug:
The remaining lifetime violation is in auto curr_mst_edge_count = mst_edge_count.value(stream);
...
prev_mst_edge_count.set_value_async(curr_mst_edge_count, stream);
On the following iteration, mst_src + curr_mst_edge_count
mst_dst + curr_mst_edge_count
mst_weights + curr_mst_edge_countA corrupted previous edge count therefore becomes an out-of-bounds output offset for The host COO vectors in the cuGraph test remain in scope, and that test performs a device synchronization before calling MST, so the input transfer is not the lifetime problem. The other This change synchronizes immediately after updating Human evaluation from @bdice: Yes, this seems like a real bug and this seems like a proper fix. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. 📝 WalkthroughSummary by CodeRabbit
WalkthroughThe MST solver adds the CUDA stream resource header and synchronizes the configured resource handle and stream after updating the previous edge count in each solve iteration. ChangesMST solver synchronization
Estimated code review effort: 1 (Trivial) | ~5 minutes Merge Risk: ⚪ Minimal · up to This localized change synchronizes the MST stream before the asynchronously copied edge count is reused; no actionable merge-blocking risk remains beyond normal checks and review. Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
/merge |
Synchronize the MST stream after asynchronously copying the current edge count from a loop-local host value into
prev_mst_edge_count.rmm::device_scalar::set_value_async()requires its host source to remain alive until the stream is synchronized. Without the synchronization, the copied edge count can be corrupted after the loop iteration ends and later used as the output offset forthrust::copy_if.This addresses the illegal-address failure observed in the cuGraph MST test on GB300: https://github.com/rapidsai/cugraph/actions/runs/33161386555/job/98885855224#step:12:3056