2026-09-16
CPU 新增 FP8 per-tensor GEMM 内核,W8A16 量化加速
值得精读。核心亮点是把 per-tensor scale 作为 block-scale 的特例来复用现有 tinygemm 框架,避免重写一套 GEMM;has_bias 通过模板参数在编译期展开,配合 AT_DISPATCH_BOOL 避免运行时分支;测试参数化覆盖了 scale 张量维度、prepack 与 bias 组合。建议读者关注模板泛化对既有调用点的契约影响,以及 CPU AMX 前置条件在前端如何被强制校验。
让 fused_moe_triton 调优器支持 XPU,并新增 Arc Pro B60 的 DeepSeek-OCR-2 MoE 调优配置
值得精读,尤其是正在做多后端 Triton kernel 调优或维护 MoE 相关 benchmark 工具的工程师。三个值得关注的设计决策:一是用 `get_device_module` 一次性收敛同步、事件、图捕获与播种,避免在 kernel 里写 XPU 专用分支,这是「最小持续成本」路线的具体落地;二是 `clear_b_tma_desc_cache` 揭示的隐藏耦合——描述符缓存与图捕获内存争用,在长生命周期服务的语境下为什么是 no-op;三是把 topk_ids 层布局从硬编码改为从模型配置解析,代价是引入了对模型元数据字段的隐式依赖。阅读时建议同时对照 Intel Triton issue #7306 / #7691 与 PR body 中的 workload 结果表,并留意 `tuning_fused_moe_triton.py` 与 `_sep` 版本仍需保持行为一致,以及 review 中 airMeng 提出的下一步方向(KV cache store 等 memory-bound kernel)。
XPU 块状 FP8 线性改用 torch scaled_mm,并预排布 scale 存储
值得精读,但重点不在算子本身,而在三处工程决策:一是派发层级的选择(把平台分支放进 _dispatch_auto_backend 而非顶层,保证显式 backend 仍可覆盖),这是容易被写错且直接破坏用户配置的细节;二是用公开 API torch.nn.functional.scaled_mm + ScalingType 显式表达 activation 与 weight 两套 block scale 配方,替换私有 torch._scaled_mm 关键字参数写法,可读性与前向兼容性都更好;三是把 scale 的 transpose-contiguous 物化提前到 process_weights_after_loading_block_quant,属于典型的「热路径代价前移」优化。建议后续补充:XPU 上 Triton vs scaled_mm 的延迟对比数据、在派发处增加 torch 版本/能力兜底,以及确认除 w8a8_block_fp8_linear 之外没有其他读取 weight_scale_inv 的消费方依赖行连续布局。
为 CPU 扩散模型新增三个融合 norm / scale-shift 内核
值得精读,尤其是要在非 CUDA 平台写融合内核的工程师。重点关注四个设计决策:一是用 `DiffusionNormMode` 编译期 tag + `DiffusionNormTraits` 让 RMSNorm/LayerNorm 共享一套 row kernel,避免复制两遍几乎相同的向量循环;二是把广播语义全部推给 Python 的 `expand_scale_shift_cpu_param`,让 C++ 只面对 `stride_c ∈ {0, 1}`,这是把「组合爆炸」挡在语言边界之外的好例子;三是用「两个 gate 指针」而不是 `gate_t` 模板派发来兼容 Hunyuan(activation dtype)与 Wan(FP32)两种 gate,代价是函数多一个参数、收益是少一层 dispatch;四是刻意复刻 CUDA 的 activation-dtype 边界以保证跨设备数值一致,读代码时要留意那两处 `convert_from_float_ext` / `static_cast<scalar_t>` 往返并非冗余。读法与风险相关:`normd.cpp` 前半(dispatch 与 helper)与 `layernorm.py` 的两处 `forward_cpu` 是主干,`torch_extension_cpu.cpp` 只是样板注册可略读;建议同时留意 `custom_op.py` 中 `forward_cpu` 默认回退的语义翻转,以及测试未覆盖的非连续输入与 4D 广播分支。