qwen3_6_scripts/prefix_prefill.py line 435:
BEFORE: # acc /= l_i[:, None] (commented out = BUG)
AFTER: acc = acc / l_i[:, None] (restored)
Impact: _fwd_kernel_flash_attn_v2 was producing unnormalized attention
output — every prefill with context length > BLOCK_M would have had
incorrect softmax weights, causing wrong generation quality. This
directly affects the effect test (偏差 ≤ ±4% benchmark).
Root cause: the v1 kernel (_fwd_kernel) does online normalization
(p_scale = beta/l_i_new), but v2 uses acc_scale = alpha only and
defers normalization to the end. Someone commented out the final
division, breaking v2.
NOTE: The file that actually gets deployed is qwen3_6_scripts/,
NOT vllm/. Previous commits edited vllm/ which has no effect
on the built Docker image.
ROOT CAUSE: All previous CCCL-informed optimizations were applied to
root-level copies (paged_attn.py, prefix_prefill.py), but deployment
uses qwen3_6_scripts/ versions. The two copies diverged silently.
Changes synced:
paged_attn.py: GridEvenShare tile sizing (TARGET_TILES 4→2,
MIN_TILE 64→128, MAX_TILE 4096→8192), V2 temp tensor caching,
BI-V100 SM-aware V1/V2 dispatch heuristic
prefix_prefill.py: BLOCK=64/BLOCK_N=64/NUM_WARPS=4 for BI-V100,
SMEM-informed asymmetric tiling, num_stages=1 for CoreX
Without this sync, deployed engine would use old un-optimized code.