diff --git a/docs/adr-proposed/ADR-0060-algo-gqa-fused-attention-ahbm.md b/docs/adr-proposed/ADR-0060-algo-gqa-fused-attention-ahbm.md index 5dee82b..9154ab8 100644 --- a/docs/adr-proposed/ADR-0060-algo-gqa-fused-attention-ahbm.md +++ b/docs/adr-proposed/ADR-0060-algo-gqa-fused-attention-ahbm.md @@ -110,6 +110,8 @@ def gqa_decode_v2(q_ptr, k_ptr, v_ptr, o_ptr, S_kv_local, d, C, P, scale, *, tl) Sj = tl.composite("gemm", a=q_g, b=tl.ref(k_tile(j), (d, TILE)), epi=[scale]) # #1: reads K (priority) tl.ex_composite("softmax_pv", s=Sj, v=tl.ref(v_tile(j), (TILE, d)), acc=acc, scale=scale) # #2: reads V # ↑ both non-blocking; CPU never waits intra-tile → max run-ahead, fewest issues + tl.wait() # ← drain ALL composites: acc is updated async (no auto-wait, + # #2 is a serial chain through acc); only final after the last #2 hierarchical_reduce_and_store(*acc, cube_id, pe_id, C, P, o_base(kv)) ```