Skip to content

Resolving the UB out-of-bounds issue caused by A2 dual-machine mixed operation#288

Merged
iforgetmyname merged 1 commit intosgl-project:mainfrom
oagniqgnat:fix_a2_ub_out_of_range
Dec 31, 2025
Merged

Resolving the UB out-of-bounds issue caused by A2 dual-machine mixed operation#288
iforgetmyname merged 1 commit intosgl-project:mainfrom
oagniqgnat:fix_a2_ub_out_of_range

Conversation

@oagniqgnat
Copy link
Copy Markdown
Contributor

Resolving the UB out-of-bounds issue caused by A2 dual-machine mixed operation

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @oagniqgnat, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves an out-of-bounds issue encountered during A2 dual-machine mixed operations by refining the memory allocation strategy within the MoE (Mixture of Experts) distribution and combination kernels. The changes involve reserving an additional 400MB for notification data and adjusting various buffer size calculations to ensure sufficient space, thereby preventing potential overflows and enhancing stability, particularly when dealing with highly unbalanced workloads.

Highlights

  • Out-of-bounds Issue Resolution: Addresses a critical out-of-bounds (UB) issue specifically occurring during A2 dual-machine mixed operations, enhancing system stability.
  • Buffer Size Adjustment: Introduces a new NOTIFY_DATA_SIZE constant (400MB) to explicitly reserve space for notification data within the MoE kernels.
  • Memory Allocation Logic Update: Modifies buffer size calculations (specifically IPC_DATA_SIZE, winSizeMin, and RANK_SIZE_ON_IPC) in both moe_distribute_combine_v2_layered_custom.h and moe_distribute_dispatch_v2_layered_custom.h to prevent overflows, particularly under unbalanced load conditions.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request resolves an out-of-bounds issue in MoE operations by reserving a 400MB buffer for 'notify data'. The changes correctly adjust various buffer size calculations (IPC_DATA_SIZE, winSizeMin, RANK_SIZE_ON_IPC) in both the combine and dispatch kernels to account for this new reserved space. The logic appears sound.

My main feedback is regarding the implementation of this change. The new constant NOTIFY_DATA_SIZE is duplicated in both kernel headers. I've suggested moving it to a shared header like moe_distribute_base.h to improve maintainability. I also recommended adding a comment to explain the purpose and origin of the 400MB size, as it's currently a magic number.

@oagniqgnat oagniqgnat force-pushed the fix_a2_ub_out_of_range branch from 7a7d923 to 29aa850 Compare December 29, 2025 09:33
@iforgetmyname iforgetmyname merged commit 1aa940d into sgl-project:main Dec 31, 2025
4 checks passed
oagniqgnat added a commit to oagniqgnat/sgl-kernel-npu that referenced this pull request Jan 8, 2026
* upstream/main:
  optimize gdn gating and fused_qkvzba_split_reshape_cat (sgl-project#306)
  fix layout numTokensPerExpertTensor partial Initialization bug (sgl-project#303)
  Supplement A2 doc, software and hardware compatibility info (sgl-project#294)
  Added an environment variable to control whether to enable the Combine Ant Migration feature. (sgl-project#304)
  Support build with cann 8.5 (sgl-project#283)
  LoRA: Optimization LoRA kernels and refactoring (sgl-project#284)
  fix a2 single combine aclnn params
  Resolving the UB out-of-bounds issue caused by A2 dual-machine mixed operation (sgl-project#288)
  fix notify magic auto-increment bug (sgl-project#291)
  split_qkv_rmsnorm_rope bugfix (sgl-project#290)
  Optimize prepare_lens by removing device transfer (sgl-project#289)
zzx-study added a commit to zzx-study/sgl-kernel-npu that referenced this pull request Jan 9, 2026
…pu-old into bugfix

* 'a3_topk-1' of https://github.com/luanyundu/sgl-kernel-npu-old:
  fix dispatch_layout to support topk -1 feature
  optimize gdn gating and fused_qkvzba_split_reshape_cat (sgl-project#306)
  fix layout numTokensPerExpertTensor partial Initialization bug (sgl-project#303)
  Supplement A2 doc, software and hardware compatibility info (sgl-project#294)
  Added an environment variable to control whether to enable the Combine Ant Migration feature. (sgl-project#304)
  Support build with cann 8.5 (sgl-project#283)
  LoRA: Optimization LoRA kernels and refactoring (sgl-project#284)
  fix a2 single combine aclnn params
  Resolving the UB out-of-bounds issue caused by A2 dual-machine mixed operation (sgl-project#288)
  fix notify magic auto-increment bug (sgl-project#291)
  split_qkv_rmsnorm_rope bugfix (sgl-project#290)
  Optimize prepare_lens by removing device transfer (sgl-project#289)
  Fix the performance degradation issue of the single-wheel operation in Ant Moving. (sgl-project#287)
  modify split_qkv_rmsnorm_rope (sgl-project#282)
AndyKong2020 pushed a commit to AndyKong2020/sgl-kernel-npu that referenced this pull request Mar 24, 2026
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.

3 participants