# PR #30597 完整报告

- 仓库：`sgl-project/sglang`
- 标题：fix arm test_norm.py error
- 合并时间：2026-07-09 14:36
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/30597

---

## 执行摘要
PR #30597 是一个极简修复，解决合并 #30216 后 ARM CI 上 norm 测试失败的问题。通过在 `norm4d_kernel_impl` 函数中为 AVX512 特定代码添加条件编译宏，确保这些代码仅在 Intel AVX512 平台上编译，从而消除 ARM 平台上的编译错误。

## 功能与动机
PR #30216 引入的代码在 `norm4d_kernel_impl` 中添加了 AVX512 优化路径（适用于 bfloat16 且维度为 32/64/128/256/512），但未做平台隔离，导致 ARM 等非 Intel 平台编译失败。此 PR 的目标是隔离这批优化代码，使之仅用于 Intel 平台。

## 实现拆解

1. **变更文件**：`sgl-kernel/csrc/cpu/norm.cpp`，仅添加 2 行代码（1 个 `#if` 和 1 个 `#endif`）。
2. **核心逻辑**：将包含 `LAUNCH_PARALLEL_LOOP_HD` 宏展开的 switch-case 块包裹在 `#if defined(CPU_CAPABILITY_AVX512)` 和 `#endif` 中。
3. **效果**：在 ARM、非 AVX512 AMD 等平台上，编译器会跳过这段 AVX512 代码，直接使用底部的通用路径；Intel AVX512 平台行为不变。

### `sgl-kernel/csrc/cpu/norm.cpp`

核心变更文件，添加条件编译隔离 AVX512 优化代码，修复 ARM 编译错误。

```cpp
// Before (partial): AVX512 fast path 无编译保护，ARM 编译失败
// After: 使用 #if defined(CPU_CAPABILITY_AVX512) 显式隔离
template <NormMode M, typename scalar_t>
void norm4d_kernel_impl(
    scalar_t* __restrict__ out,
    const scalar_t* __restrict__ input,
    const NormParams& p,
    const scalar_t* __restrict__ gate = nullptr) {
#if defined(CPU_CAPABILITY_AVX512)
  // fast path only applies to bfloat16 when D in {32, 64, 128, 256, 512}
  if constexpr (std::is_same_v<scalar_t, at::BFloat16>) {
    switch (p.D) {
      LAUNCH_PARALLEL_LOOP_HD(32);
      LAUNCH_PARALLEL_LOOP_HD(64);
      LAUNCH_PARALLEL_LOOP_HD(128);
      LAUNCH_PARALLEL_LOOP_HD(256);
      LAUNCH_PARALLEL_LOOP_HD(512);
      default:
        break;
    }
  }
#endif // 仅 Intel AVX512 平台编译此段

  // generic path: 所有平台均使用
  LAUNCH_PARALLEL_LOOP(
      const scalar_t* __restrict__ gate_ptr{nullptr}; if constexpr (NormTraits<M>::has_gate) {
        gate_ptr = gate + p.output_offset(b, h, t);
      } NormReduceGeneric<M, scalar_t, false>::
          apply(out + p.output_offset(b, h, t), input + p.input_offset(b, h, t), gate_ptr, nullptr, p, p.D));
}

```

## 评论区精华
无实质讨论。Reviewer cyb70289 回复 "Thanks for the fix. +1"，表示认可。

## 风险与影响
- **风险**：极低。仅增加编译宏保护，不改变运行时逻辑。需确认 `CPU_CAPABILITY_AVX512` 宏在所有平台上定义准确，否则可能存在宏定义错误导致行为异常，但 SGLang 项目中该宏定义已经过验证。
- **影响**：修复 ARM CI 回归，对 Intel 平台无影响，性能不变。

## 关联脉络
直接关联 #30216（引入 AVX512 优化的 PR），是一个快速 hotfix。与近期其他 CPU 相关 PR（如 #27862、#28527）共同体现了对多平台支持的持续改进。