gqa(adr-0065): N1 — composite GEMM computes numerically in data mode
Two changes make a composite's matmul replay in Phase 2: (1) op_log _extract_op_info(CompositeCmd) now SCANS ops for the gemm op (it is ops[0] for a legacy composite but sits after the prologue MATH ops in a recipe), emitting one composite_gemm record with the gemm's a/b/out addrs+spaces; (2) PE_SCHEDULER._dispatch_composite records the composite as a zero-duration numeric op (no-op without an op_logger, so latency-only mode is unchanged). Verified: a composite GEMM with seeded inputs writes a@b to its HBM output. DataExecutor._execute_gemm is now best-effort: if an operand's data was never produced (torch.empty bench input) or a shard read is out-of-bounds (column-wise sharded operand read at full shape), skip the matmul instead of crashing. This keeps composite-using benches (qkv-gemm, composite-epilogue) green now that their previously-uncomputed GEMM actually fires. Suite 813 pass / 3 pre-existing fail. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -167,6 +167,13 @@ class PeSchedulerComponent(ComponentBase):
|
||||
yield from self._hazard.admit(env, cmd, pe_txn.done)
|
||||
env.process(self._retire_on_done(env, pe_txn.done, cmd.completion.id))
|
||||
|
||||
# Record the composite as a single numeric op for data-mode replay
|
||||
# (ADR-0027): the tiles model latency; this zero-duration record
|
||||
# carries the matmul (a@b → out) the DataExecutor replays. No-op
|
||||
# without an op_logger (latency-only mode), so latency is unchanged.
|
||||
self._on_process_start(env, cmd)
|
||||
self._on_process_end(env, cmd)
|
||||
|
||||
plan = self._generate_plan(cmd)
|
||||
|
||||
self._pipeline_counter += 1
|
||||
|
||||
Reference in New Issue
Block a user