Skip to content

llama: avoid graph rebuilds for unchanged layer capture - #364

Merged
bri-prism merged 1 commit into
prismfrom
perf/idempotent-layer-capture
Oct 16, 2026
Merged

bri-prism merged 1 commit into
prismfrom
perf/idempotent-layer-capture

Conversation

@bri-prism

Copy link
Copy Markdown
Collaborator

Repeated calls to llama_set_embeddings_layer_inp with the current value unnecessarily invalidate the scheduler, forcing the next decode to reserve its compute graph again. Return early when the capture flag is unchanged; real enable/disable transitions still request a reserve, and an already-pending reserve remains pending.

The CUDAFast DFlash2 resident works around this at the caller by tracking whether capture is enabled. This applies the same principle at the library boundary. Source: CUDAFast submission and prefill investigation.

Validation: assertions-enabled CPU build on Apple Silicon. A linked public-API probe compared repeated setters with a reference that only sets on transitions, across eight three-token decodes, two captured layers, and enable/disable/re-enable transitions. The unchanged library performed eight scheduler reservations versus three in the reference; this change performs three. All logits and captured layer inputs were finite and bit-identical. Removing this guard reproduced the extra reservations. This measures eliminated work, not a CUDA or end-to-end throughput gain. CUDA hardware validation remains outstanding.

@bri-prism
bri-prism merged commit 0082ac2 into prism Oct 16, 2026
8 checks passed
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