已关闭
validate_buffer_usage.py 中 k_tile_factor 计算存在除零风险 #530
崇理战队创建于  28 天前关闭于  26 天前
崇理战队
28 天前 创建

kernels/automode/a5/flash_atten/scripts/validate_buffer_usage.pycompute_ub_usage_ndcompute_ub_usage_dn 函数中:

k_tile_factor = tile_s1 // cube_s1
vec_s0 = cube_s0 // VEC_CORES // k_tile_factor

tile_s1 < cube_s1 时,tile_s1 // cube_s1 结果为 0,后续 cube_s0 // VEC_CORES // k_tile_factor 会触发 ZeroDivisionError

虽然正常运行场景下 tile_s1 >= cube_s1 通常成立,但该脚本作为 buffer 校验工具,应该对异常参数输入做防御性处理,而不是直接崩溃。用户在调整 FlashAttention 的 tiling 参数时,完全可能传入 tile_s1 < cube_s1 的组合来试探 buffer 上限。

建议在除法前增加校验:

k_tile_factor = tile_s1 // cube_s1
if k_tile_factor == 0:
    return {"total_bytes": 0, "overflow": False, "detail": "tile_s1 < cube_s1, skipped"}
vec_s0 = cube_s0 // VEC_CORES // k_tile_factor

或者在 main 函数解析参数后做前置校验,提前报错给出清晰提示。

likedislike
csjlchen
csjlchen成员
26 天前 评论:

谢谢你的建议,修正中

likedislike
csjlchencsjlchen成员
26 天前 关联了pull request:Support split the odd valid shape in pushVec2GMFiFo
CANN-robotCANN-robot成员
26 天前 关闭了 issue
CANN-robotCANN-robot成员
26 天前 添加了label:resolved