Skip to main content

b200-mbarrier-protocol-auditor

Use when a Blackwell/B200 asynchronous kernel deadlocks, fails intermittently, reads stale data, reuses a stage too early, or when the arrival, tx-count, phase, and wait of TMA/tcgen05/CLC need auditing. Produces a per-barrier protocol ledger and fix points. Not for cases already known to be out-of-bounds accesses, layout mismatches, or ordinary host-side synchronization problems.

Aller à l'installation

Informations de source

Dépôt
mirage-project/mirage
Dernière activité de la source
28 juillet 2026 à 02:04
Langue détectée de SKILL.md
anglais
Étoiles
2 505
Forks
256

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
b200-mbarrier-protocol-auditor
description
Use when a Blackwell/B200 asynchronous kernel deadlocks, fails intermittently, reads stale data, reuses a stage too early, or when the arrival, tx-count, phase, and wait of TMA/tcgen05/CLC need auditing. Produces a per-barrier protocol ledger and fix points. Not for cases already known to be out-of-bounds accesses, layout mismatches, or ordinary host-side synchronization problems.
source_book
Modern GPU Programming For MLSys (MLC Community) + NVIDIA Blackwell Tuning/Compatibility Guides
source_chapter
S9; S6; S7; S13; S14
tags
["b200","blackwell"]
related_skills
["b200-scope-layout-dispatch","b200-layout-contract-auditor","b200-tma-pipeline-designer","b200-tmem-lifecycle-planner","b200-tcgen05-mma-contract-builder","b200-warp-specialized-debugger"]
version
0.1.0
<!-- Distilled from "Modern GPU Programming for MLSys" — https://mlc.ai/modern-gpu-programming-for-mlsys/ --> # B200 mbarrier Protocol Auditor ## R — Source evidence (Reading, paraphrased) - [S9] An mbarrier keeps an arrival counter and a phase in SMEM; completion of asynchronous operations cannot be inferred from program order. - [S9] A TMA load's `expect_tx` registers both the issuing thread's arrival and the expected bytes; the phase flips only when both the arrivals and the pending bytes are complete. - [S9] A `tcgen05` MMA must explicitly associate a barrier arrival on its commit path; otherwise consumers may wait forever. - [S13] Multi-role GEMMs commonly carry two barrier sets, forward ready and backward release; a wrong initial phase deadlocks or silently corrupts. > Source: distilled from "Modern GPU Programming for MLSys" (https://mlc.ai/modern-gpu-programming-for-mlsys/) and the NVIDIA Blackwell tuning/compatibility guides. Short paraphrases only; no long passages are reproduced. --- ## I — Methodology skeleton (Interpretation) Treat every barrier as a bidirectional contract, not "a wait somewhere": - Who initializes it, and how many arrivals are expected? - Who produces the data, and does the completion signal come from threads, a TMA byte count, an MMA commit, or a CLC response? - Which consumers wait on which phase? - On completion, does it release data-ready or buffer-free? - When does the phase flip, and who holds the local expected phase for the next round? The audit's goal is a complete barrier ledger; any field without a unique answer is a potential bug. --- ## A1 — Applications in the source (Past Application) ### Case 1: producer/consumer initial phases - With an empty buffer, the producer's first round should start filling immediately; the consumer's first round should block until the data is ready. - If the two sides share the same initial phase, both may block on the first round, or an old completion may be mistaken for a new one. ### Case 2: the four-barrier GEMM - `tma2mma`: SMEM data ready. - `mma2tma`: SMEM stage overwritable. - `mma2ld`: TMEM result ready. - `ld2mma`: TMEM region reusable. - Forward data flow and backward resource release must close the loop in pairs. --- ## A2 — Trigger scenarios (Future Trigger) ★ ### In what situations will the user need this skill? 1. "The kernel is stuck in mbarrier.wait — help me check the arrival/phase." 2. "My double buffering occasionally reads the previous round's tile." 3. "How should tcgen05 commit be wired to the barrier?" ### Language signals - "The kernel is stuck in mbarrier.wait — help me check the arrival/phase." - "My double buffering occasionally reads the previous round's tile." - "How should tcgen05 commit be wired to the barrier?" ### Distinction from adjacent skills Versus `b200-layout-contract-auditor`: this skill only proves "when it is safe", not "whether the address is correct". Versus `b200-warp-specialized-debugger`: this skill is a dedicated barrier audit; the debugger is a full symptom-driven workflow. --- ## E — Executable steps (Execution) Once the skill is activated, the agent must execute the following procedure: 1. **Build the barrier ledger** - Fields: name, storage address, init scope, expected arrivals, tx bytes, producer, arrival mechanism, consumer, wait phase, released resource. 2. **Verify the initialization sites** - Barrier init must happen before the role branch and be observed by the correct scope. - Check alignment and the number of stages. 3. **Verify the producer side** - TMA load: is the expected byte count exact, and does the actual copy complete against the same barrier? - MMA/`tcgen05.cp`: is the commit bound to the correct barrier arrival? - Plain threads: does the number of threads actually arriving equal the init count? 4. **Verify the consumer side** - Do the waited-on barrier and the stage index match? - Does the local phase flip exactly once, and only once, after a successful consume? 5. **Verify the ready/free closed loop** - Every SMEM/TMEM slot has both a "when readable" and a "when overwritable/freeable" condition. 6. **Verify scope legality** - A CTA-wide collective must not hide inside a warpgroup-only branch. - Cluster signals must use the correct CTA mask/remote arrival. 7. **Check the first and last rounds** - Simulate the prologue's first wait, one steady-state lap, and the epilogue's final drain. - Hand-compute the 0/1/0/1 phase sequence in a table. 8. **Change only one handoff** - After changing exactly one of init count, phase, arrival, or fence, run minimal correctness first, then measure performance. ### Required outputs 1. **Conclusion**: the current choice/diagnosis, without vague "could be any of them" hedging. 2. **Evidence or assumptions**: which come from user data, and which are hypotheses awaiting verification. 3. **Contract/table/timeline**: the auditable intermediate artifacts corresponding to this skill. 4. **Minimal validation**: correctness tests, boundary tests, and one falsifiable experiment. 5. **Risks and fallback**: alternative paths when hardware, version, or resource conditions are not met. --- ## B — Boundaries (Boundary) ★ ### Do not use when - There is already conclusive evidence of an out-of-bounds access, an invalid pointer, or a wrong descriptor. - Ordinary CPU mutex/condition_variable synchronization problems. ### Failure modes - Treating `expect_tx` as a plain arrival and ignoring the byte budget. - Forgetting the MMA commit arrival. - Stage index correct but the phase belongs to the previous round. - Building only the ready barrier and not the buffer-release barrier. ### Limitations - Compiler lowering may change the surface code structure; ultimately verify the barrier initialization and commit/wait in the generated CUDA/PTX. --- ## Related skills - **depends-on**: `b200-scope-layout-dispatch` - **contrasts-with**: `b200-layout-contract-auditor` - **composes-with**: `b200-tma-pipeline-designer`, `b200-tmem-lifecycle-planner`, `b200-tcgen05-mma-contract-builder`, `b200-warp-specialized-debugger` --- ## Audit info - **Validation passed**: V1 ✓ / V2 ✓ / V3 ✓ - **Test definitions**: 6 (3 should_trigger / 2 should_not_trigger / 1 edge_case) - **Hardware validation**: not performed; must be verified on a target B200 - **Distilled**: 2026-06-25
Voir sur GitHub