Skip to main content

mirage-graph-coverage

Read-only coverage auditor for the mirage / MPK persistent-megakernel's GENERATED task graph: cross-references DECLARED tensors (all_tensors[...] in kernel_N.cu) against tensors CONSUMED by tasks (inputs/outputs base_ptr in task_graph_N.json) and flags any tensor declared but never consumed as an input - the "feature defined in code but never wired into the task graph" bug class (e.g. RoPE cos/sin tables allocated but consumed by 0 tasks => position-blind attention => incoherent / degenerate-repetition output). A numerics / relL2 harness silently PASSES on this class, so run THIS first when a megakernel compiles + exits 0 but emits incoherent output. Distinct from inference-graph-diff (vLLM FX / Inductor graphs). Triggers on "graph coverage", "task graph audit", "megakernel wiring", "declared but unconsumed tensor", "rope not wired", "missing task", or "megakernel / mirage / MPK / task-graph" with "coverage / wiring / unconsumed / unwired / audit".

Informations de source

Dépôt
cfregly/gpu-perf-tune
Dernière activité de la source
17 août 2026 à 00:19
Langue détectée de SKILL.md
anglais
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
mirage-graph-coverage
license
MIT
compatibility
Requires a skills-compatible agent.
metadata
{"last-validated":"2026-06-05"}
description
Read-only coverage auditor for the mirage / MPK persistent-megakernel's GENERATED task graph: cross-references DECLARED tensors (all_tensors[...] in kernel_N.cu) against tensors CONSUMED by tasks (inputs/outputs base_ptr in task_graph_N.json) and flags any tensor declared but never consumed as an input - the "feature defined in code but never wired into the task graph" bug class (e.g. RoPE cos/sin tables allocated but consumed by 0 tasks => position-blind attention => incoherent / degenerate-repetition output). A numerics / relL2 harness silently PASSES on this class, so run THIS first when a megakernel compiles + exits 0 but emits incoherent output. Distinct from inference-graph-diff (vLLM FX / Inductor graphs). Triggers on "graph coverage", "task graph audit", "megakernel wiring", "declared but unconsumed tensor", "rope not wired", "missing task", or "megakernel / mirage / MPK / task-graph" with "coverage / wiring / unconsumed / unwired / audit".
# mirage megakernel graph-coverage auditor Catches the **missing-wiring** bug class in a mirage/MPK generated megakernel: a tensor (or whole feature) is defined and allocated but never wired into a task, so the kernel runs without it. The canonical case is GLM-5.1 on GB300 where the RoPE `cos`/`sin` tables were attached but consumed by **0 tasks**, so attention ran position-blind and the model emitted fluent-but-incoherent, repetition-collapsing tokens - while every per-kernel numerics test passed. ## Quick start ```bash python3 assets/mk-graph-coverage-audit.py <gendir> # <gendir> holds the generated kernel_<rank>.cu + task_graph_<rank>.json # (e.g. mirage demo/deepseek_v3/). Defaults to /work/mirage-perop2/demo/deepseek_v3 # options: --critical rope_cos,rope_sin,<scale-tensor> --ranks 0,1,2,3 ``` Exit 0 = PASS (every critical tensor consumed as input), 1 = FAIL (a critical tensor is declared but never consumed = missing wiring), 2 = no artifacts. ## What it does Per TP rank, it parses two generated artifacts and diffs them: - **declared** = `all_tensors["NAME"] = NAME;` lines in `kernel_<rank>.cu` - **consumed** = `base_ptr` of every `all_tasks[].inputs[]` / `.outputs[]` in `task_graph_<rank>.json`, mapped to the set of consuming `task_type`s + counts It then classifies each declared tensor and FAILs iff a *critical* tensor (`rope_cos`,`rope_sin`,`cos_pos_embed`,`sin_pos_embed` by default) has **0 input consumers**. ## Reading the output - `[OK] <t>: input_refs=N consumer_task_types=[...]` - wired (consumed by a task). - `[MISSING-WIRING] <t>: input_refs=0` - declared but never read by any task => the bug. - `INFO write-only` - produced by a task but never read (often a final output like `output_token`. Suspicious only for an intermediate/feature tensor). - `INFO dead` - declared, 0 refs at all (allocated scratch / codegen leftover. The `nullptr` sentinel shows here as a benign false positive). ## Worked example (GLM-5.1 on GB300) Before the wiring fix the auditor FAILs: `rope_cos` `input_refs=0` (rope absent from the graph). After the fix it PASSes: `rope_cos`/`rope_sin` `input_refs=156`, `consumer_task_types=[278, 296]` (296 = q-rope-apply, 278 = k_pe / KV-cache gather). Same artifacts a relL2 numerics harness would have called clean in both states - graph-coverage is what distinguishes them. ## Triage rule For a megakernel coherence bug (compiles, exits 0, incoherent output), run the graph-coverage audit **before** building a per-kernel numerics harness. A missing/mis-wired task makes a numerics harness pass while the model stays wrong, the audit names the unwired tensor directly. Only once coverage is clean does a relL2 harness make sense. ## Caveat Verifies **structural wiring** (is the tensor consumed by a task), not runtime numerical coherence. A PASS removes "feature absent" as the suspect. It does not by itself prove the output is correct.
Voir sur GitHub