Skip to content

Fix TMA descriptor error on H100 PCIe: pad LSE buffer width to multiple of 16 - #13

Open
vivien-cheng wants to merge 1 commit into
HazyResearch:mainfrom
vivien-cheng:fix/lse-intermediates-padding
Open

Fix TMA descriptor error on H100 PCIe: pad LSE buffer width to multiple of 16#13
vivien-cheng wants to merge 1 commit into
HazyResearch:mainfrom
vivien-cheng:fix/lse-intermediates-padding

Conversation

@vivien-cheng

Copy link
Copy Markdown

Ran the demo on H100 PCIe (114 SMs), got stderr floods with "Error in vector TMA descriptor creation: invalid argument" and the attention reduction reads garbage.

The kernel pads the attention-partials axis to a multiple of 16 (ROUNDED_MAX_ATTN_PARTIALS), but the Python allocation uses the raw SM count, so the buffer is narrower than the TMA box and the stride isn't 16-byte aligned.

Fix: same round-up in Python. Padding columns are never indexed.
Tested on H100 PCIe: clean build, no TMA errors (673 tok/s).

The kernel rounds the attention-partials axis up to a multiple of 16
(ROUNDED_MAX_ATTN_PARTIALS in attention_reduction.cu, and the sv_fl width
in attn_lse_intermediates_t in llama.cuh) and TMA-loads the buffer at that
padded width. The Python allocation used the raw SM count, so the global
tensor was narrower than the TMA box.

On an SM count not divisible by 4 this also makes the innermost stride not
a multiple of 16 bytes, which cuTensorMapEncodeTiled rejects outright.

Apply the same round-up in Python. The padding columns are never indexed.
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.

1 participant