[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-compileiq-validate-result":3,"mdc--1v7ztm-key":34,"related-repo-nvidia-compileiq-validate-result":1715,"related-org-nvidia-compileiq-validate-result":1798},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"compileiq-validate-result","validate CompileIQ search results","Use AFTER a Search has completed and BEFORE claiming any speedup or shipping an ACF. Loads the dump_results CSV, extracts top-K candidates (single-objective) or the Pareto front (multi-objective), re-measures each against the no-ACF baseline with 100+ trials on fresh caches, runs Welch's t-test plus Cohen's d, rejects three classic false-positive patterns (lucky-min \u002F higher-variance \u002F multiple-comparisons-of-N), and saves the validated winner as best.acf. Triggers on \"validate result\", \"extract best config\", \"Welch's t-test\", \"is my speedup real\", \"save best ACF\", \"pareto front\", \"claim speedup\", \"ship config\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":17,"slug":18,"type":15},"QA","qa",{"name":20,"slug":21,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},107,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FCompileIQ","2026-07-14T05:32:06.343444","Apache-2.0",8,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"An Optimizer for Nvidia Compilers.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FCompileIQ\u002Ftree\u002FHEAD\u002Fagent-skills\u002Fcompileiq-validate-result","---\nname: compileiq-validate-result\ndescription: >\n  Use AFTER a Search has completed and BEFORE claiming any speedup or\n  shipping an ACF. Loads the dump_results CSV, extracts top-K candidates\n  (single-objective) or the Pareto front (multi-objective), re-measures each\n  against the no-ACF baseline with 100+ trials on fresh caches, runs Welch's\n  t-test plus Cohen's d, rejects three classic false-positive patterns\n  (lucky-min \u002F higher-variance \u002F multiple-comparisons-of-N), and saves the\n  validated winner as best.acf. Triggers on \"validate result\", \"extract best\n  config\", \"Welch's t-test\", \"is my speedup real\", \"save best ACF\", \"pareto\n  front\", \"claim speedup\", \"ship config\".\nwhen_to_use: |\n  - tuner.start() returned and there's a results CSV.\n  - User wants to ship an ACF to production.\n  - Reported speedup feels too good to be true.\n  Don't use when:\n  - Search hasn't completed (and user hasn't decided to stop early).\n  - User just wants the raw best row — that's one line of pandas.\nlicense: Apache-2.0\nmetadata:\n  version: \"1.0.0\"\n  author: NVIDIA CompileIQ\n  domain: compiler-optimization\nallowed-tools: Bash Read\npaths: [\"**\u002F*.csv\", \"**\u002F*.acf\", \"**\u002F*.py\"]\n---\n\n# compileiq-validate-result\n\nThe score CompileIQ reports during a search uses N=5-15 trials per evaluation\nand a shared cache. That's appropriate for the search loop but **wildly\ninsufficient for shipping**. This skill is the gate before any ACF goes to\nproduction.\n\n## When\n\n- `tuner.start()` has returned and there's a `dump_results=` CSV on disk.\n- User wants to claim a speedup or ship an ACF.\n- A reported speedup feels too clean — validate it.\n\n## Steps\n\n### 1. Load the CSV\n\n```python\nfrom compileiq.results import SearchResult\n\nresults = SearchResult.from_csv(\"results.csv\", problem_type=\"min\", clear_duplicates=True)\ndf = results.get_results()\nprint(f\"{len(df)} evaluations across {df['generation'].max()+1} generations\")\n```\n\n### 2. Extract candidates\n\n**Single-objective:**\n```python\nbest = results.get_best_result()\n# dict: {metadata, generation, score_1, params, [norm_score_1]}\nscore = best.get(\"score_1\", best.get(\"score\"))   # legacy defensiveness\nacf_hex = best[\"params\"]                          # hex string\n```\n\n`score_1` (with underscore-one) is the canonical key — it matches the\nmulti-objective convention `score_N`. Older code sometimes uses plain `score`;\nthe fallback above handles both shapes.\n\nFor top-K:\n```python\nimport pandas as pd\ndf_valid = df[pd.to_numeric(df[\"score_1\"], errors=\"coerce\") \u003C 1e10]\ntop_k = df_valid.nsmallest(5, \"score_1\")          # nlargest for MAX problems\n```\n\n**Multi-objective:**\n```python\nfront = results.pareto_front()   # raises if num_objectives == 1\nfor candidate in front:\n    print(candidate[\"score_1\"], candidate[\"score_2\"], candidate[\"params\"])\n```\n\n**Mixed user+compiler search space:** results carry separate keys —\n`best[\"user_space\"]` for the user-side knobs, `best[\"params\"]` for the ACF\nhex. Save both.\n\n### 3. Re-measure on fresh cache (the actual validation)\n\n| Stage | Warmup | Trials | Cache | GPU clocks |\n|---|---|---|---|---|\n| Optimization (during `tuner.start()`) | 5-25 | 5-15 | per-eval | recommended locked |\n| **Validation** | **≥50** | **≥100** | per-measurement | **must be locked** |\n\nBoth the baseline (no ACF) and each top-K candidate are re-measured at\nvalidation N. The optimization-time measurement is too noisy to ship from.\n\n### 4. Statistical gate — the ship rule\n\n```python\nimport numpy as np\nfrom scipy import stats\n\ndef validate_speedup(baseline_ms: np.ndarray, optimized_ms: np.ndarray) -> dict:\n    t, p = stats.ttest_ind(baseline_ms, optimized_ms, equal_var=False)   # Welch's\n    b_mean, b_std = baseline_ms.mean(),  baseline_ms.std(ddof=1)\n    o_mean, o_std = optimized_ms.mean(), optimized_ms.std(ddof=1)\n    pooled = np.sqrt((b_std**2 + o_std**2) \u002F 2)\n    d = (b_mean - o_mean) \u002F pooled if pooled > 0 else 0.0\n    return {\n        \"speedup_mean\":  b_mean \u002F o_mean,\n        \"speedup_median\": np.median(baseline_ms) \u002F np.median(optimized_ms),\n        \"p_value\":       float(p),\n        \"cohens_d\":      float(d),\n        \"significant\":   bool(p \u003C 0.05 and o_mean \u003C b_mean and d > 0.2),\n        \"baseline\":  {\"mean\": b_mean, \"std\": b_std,\n                      \"p5\": np.percentile(baseline_ms,  5),\n                      \"p95\": np.percentile(baseline_ms, 95)},\n        \"optimized\": {\"mean\": o_mean, \"std\": o_std,\n                      \"p5\": np.percentile(optimized_ms,  5),\n                      \"p95\": np.percentile(optimized_ms, 95)},\n    }\n```\n\n**Ship rule:** `p_value \u003C 0.05` AND `cohens_d > 0.2` (preferably `> 0.5`)\nAND `optimized.mean \u003C baseline.mean`. Anything weaker, **do not claim a\nspeedup**.\n\n### 5. Three false-positive patterns to actively check\n\n| # | Pattern | Symptom | Cause | Check | Disposition |\n|---|---|---|---|---|---|\n| 1 | **Lucky-min** | Optimized `min` is lower but `mean` is equal or worse | Optimizer picked a config that occasionally runs fast | Compare **means**, not minimums; reject if `optimized.mean ≥ baseline.mean` | Reject. |\n| 2 | **Higher-variance** | Optimized `p5-p95` range is wider than baseline with same mean | ACF didn't speed anything up; just spread the distribution | Compute `(p95 - p5)` for both; reject if optimized range is materially wider (>25%) | Reject. |\n| 3 | **Multiple-comparisons** | Best of 500 evaluations looks 2-5% faster but doesn't reproduce | With 500 evals some will look good by chance | Re-measure top-K on a *fresh* cache and *fresh* trials; reject candidates that don't survive | Reject. |\n\n### 6. Save the validated winner\n\n```python\nfrom compileiq.utils.helpers import save_compiler_config\nsave_compiler_config(\"best.acf\", best[\"params\"])\n\n# Mixed search spaces: persist the user_space knobs separately\nif \"user_space\" in best:\n    import json\n    Path(\"best.user_space.json\").write_text(json.dumps(best[\"user_space\"], indent=2))\n```\n\n### 7. Reproducibility log\n\nAppend one row per candidate decision to `validation-log.csv`. Fields, per\n`docs\u002Fflashinfer_booster.md:135-148`:\n\n- timestamp (UTC ISO 8601)\n- ACF filename + sha256\n- manifest \u002F release version\n- benchmark command\n- GPU model + driver version\n- CTK version (nvcc release)\n- `ptxas`, `nvcc` paths + versions\n- framework version or commit (Triton \u002F Helion \u002F FlashInfer \u002F cuTeDSL)\n- input shape\n- baseline mean ± std\n- candidate mean ± std\n- p-value\n- Cohen's d\n- decision: `KEPT` or `REJECTED:\u003Creason>`\n\nThe `scripts\u002Fwelch_validate.py` helper records the timing\u002Fstatistical fields,\nACF hash, benchmark commands, GPU\u002Ftoolchain metadata, and common environment\nvariables automatically. Pass `--manifest`, `--framework`, and `--input-shape`\nfor workload-specific fields the helper cannot infer.\n\n## CLI helper\n\n```bash\npython scripts\u002Fwelch_validate.py \\\n    --acf best.acf \\\n    --baseline-cmd \"python bench.py --routine matmul\" \\\n    --opt-cmd \"PTXAS_OPTIONS='--apply-controls=best.acf' python bench.py --routine matmul\" \\\n    --trials 100 --warmup 50 \\\n    --score-regex 'mean: ([0-9.]+)' \\\n    --manifest booster-packs-YYYY.MM.DD \\\n    --framework \"flashinfer \u003Cversion>\" \\\n    --input-shape \"routine=matmul, M=..., N=..., K=...\" \\\n    --output validation-log.csv\n```\n\nPrints `KEPT` or `REJECTED:\u003Creason>` and appends a row to the log. Also\nimportable: `from welch_validate import validate_speedup`.\n\n## Self-test\n\n```bash\npython scripts\u002Fwelch_validate.py --self-test\n```\n\nSynthesizes two identical normal distributions, asserts the statistical gate\nreturns `significant=False`. Then differs them, asserts `significant=True`.\nCatches misconfigured scipy\u002Fnumpy before a real validation.\n\n## Gotchas\n\n- **`pareto_front()` raises if `num_objectives == 1`.** Guard with\n  `if results.num_scores > 1:` or use try\u002Fexcept.\n- **`score_1` vs `score`.** Current API is `score_1`. Some older results\n  exporters used plain `score`. The defensive read pattern\n  `best.get(\"score_1\", best.get(\"score\"))` handles both.\n- **Don't validate on the same cache the search used.** With `CIQ_KEEP_CACHE=1`\n  active during search, validation must explicitly wipe `~\u002F.cache\u002Fcompileiq`\n  or use a fresh `TRITON_CACHE_DIR` and `HELION_SKIP_CACHE=1`. Otherwise the\n  optimization-time numbers re-appear and you're not validating anything.\n- **Validation N is independent of optimization N.** Even if the search used\n  N=5 per evaluation, validation needs N ≥ 100. Don't try to be clever and\n  reuse search-time samples.\n\n## Next\n\n- If the validated speedup ships: commit `best.acf` and `validation-log.csv`.\n- If validation fails: `compileiq-debug` for diagnosis.\n- For more thorough exploration: re-run `compileiq-run-search` with bigger\n  `pool_size`\u002F`generations`.\n",{"data":35,"body":46},{"name":4,"description":6,"when_to_use":36,"license":26,"metadata":37,"allowed-tools":41,"paths":42},"- tuner.start() returned and there's a results CSV.\n- User wants to ship an ACF to production.\n- Reported speedup feels too good to be true.\nDon't use when:\n- Search hasn't completed (and user hasn't decided to stop early).\n- User just wants the raw best row — that's one line of pandas.\n",{"version":38,"author":39,"domain":40},"1.0.0","NVIDIA CompileIQ","compiler-optimization","Bash Read",[43,44,45],"**\u002F*.csv","**\u002F*.acf","**\u002F*.py",{"type":47,"children":48},"root",[49,56,70,77,112,118,125,184,190,198,237,264,269,300,308,339,365,371,489,494,500,698,747,753,959,965,1027,1033,1054,1155,1191,1197,1431,1456,1462,1485,1506,1512,1641,1647,1709],{"type":50,"tag":51,"props":52,"children":53},"element","h1",{"id":4},[54],{"type":55,"value":4},"text",{"type":50,"tag":57,"props":58,"children":59},"p",{},[60,62,68],{"type":55,"value":61},"The score CompileIQ reports during a search uses N=5-15 trials per evaluation\nand a shared cache. That's appropriate for the search loop but ",{"type":50,"tag":63,"props":64,"children":65},"strong",{},[66],{"type":55,"value":67},"wildly\ninsufficient for shipping",{"type":55,"value":69},". This skill is the gate before any ACF goes to\nproduction.",{"type":50,"tag":71,"props":72,"children":74},"h2",{"id":73},"when",[75],{"type":55,"value":76},"When",{"type":50,"tag":78,"props":79,"children":80},"ul",{},[81,102,107],{"type":50,"tag":82,"props":83,"children":84},"li",{},[85,92,94,100],{"type":50,"tag":86,"props":87,"children":89},"code",{"className":88},[],[90],{"type":55,"value":91},"tuner.start()",{"type":55,"value":93}," has returned and there's a ",{"type":50,"tag":86,"props":95,"children":97},{"className":96},[],[98],{"type":55,"value":99},"dump_results=",{"type":55,"value":101}," CSV on disk.",{"type":50,"tag":82,"props":103,"children":104},{},[105],{"type":55,"value":106},"User wants to claim a speedup or ship an ACF.",{"type":50,"tag":82,"props":108,"children":109},{},[110],{"type":55,"value":111},"A reported speedup feels too clean — validate it.",{"type":50,"tag":71,"props":113,"children":115},{"id":114},"steps",[116],{"type":55,"value":117},"Steps",{"type":50,"tag":119,"props":120,"children":122},"h3",{"id":121},"_1-load-the-csv",[123],{"type":55,"value":124},"1. Load the CSV",{"type":50,"tag":126,"props":127,"children":132},"pre",{"className":128,"code":129,"language":130,"meta":131,"style":131},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from compileiq.results import SearchResult\n\nresults = SearchResult.from_csv(\"results.csv\", problem_type=\"min\", clear_duplicates=True)\ndf = results.get_results()\nprint(f\"{len(df)} evaluations across {df['generation'].max()+1} generations\")\n","python","",[133],{"type":50,"tag":86,"props":134,"children":135},{"__ignoreMap":131},[136,147,157,166,175],{"type":50,"tag":137,"props":138,"children":141},"span",{"class":139,"line":140},"line",1,[142],{"type":50,"tag":137,"props":143,"children":144},{},[145],{"type":55,"value":146},"from compileiq.results import SearchResult\n",{"type":50,"tag":137,"props":148,"children":150},{"class":139,"line":149},2,[151],{"type":50,"tag":137,"props":152,"children":154},{"emptyLinePlaceholder":153},true,[155],{"type":55,"value":156},"\n",{"type":50,"tag":137,"props":158,"children":160},{"class":139,"line":159},3,[161],{"type":50,"tag":137,"props":162,"children":163},{},[164],{"type":55,"value":165},"results = SearchResult.from_csv(\"results.csv\", problem_type=\"min\", clear_duplicates=True)\n",{"type":50,"tag":137,"props":167,"children":169},{"class":139,"line":168},4,[170],{"type":50,"tag":137,"props":171,"children":172},{},[173],{"type":55,"value":174},"df = results.get_results()\n",{"type":50,"tag":137,"props":176,"children":178},{"class":139,"line":177},5,[179],{"type":50,"tag":137,"props":180,"children":181},{},[182],{"type":55,"value":183},"print(f\"{len(df)} evaluations across {df['generation'].max()+1} generations\")\n",{"type":50,"tag":119,"props":185,"children":187},{"id":186},"_2-extract-candidates",[188],{"type":55,"value":189},"2. Extract candidates",{"type":50,"tag":57,"props":191,"children":192},{},[193],{"type":50,"tag":63,"props":194,"children":195},{},[196],{"type":55,"value":197},"Single-objective:",{"type":50,"tag":126,"props":199,"children":201},{"className":128,"code":200,"language":130,"meta":131,"style":131},"best = results.get_best_result()\n# dict: {metadata, generation, score_1, params, [norm_score_1]}\nscore = best.get(\"score_1\", best.get(\"score\"))   # legacy defensiveness\nacf_hex = best[\"params\"]                          # hex string\n",[202],{"type":50,"tag":86,"props":203,"children":204},{"__ignoreMap":131},[205,213,221,229],{"type":50,"tag":137,"props":206,"children":207},{"class":139,"line":140},[208],{"type":50,"tag":137,"props":209,"children":210},{},[211],{"type":55,"value":212},"best = results.get_best_result()\n",{"type":50,"tag":137,"props":214,"children":215},{"class":139,"line":149},[216],{"type":50,"tag":137,"props":217,"children":218},{},[219],{"type":55,"value":220},"# dict: {metadata, generation, score_1, params, [norm_score_1]}\n",{"type":50,"tag":137,"props":222,"children":223},{"class":139,"line":159},[224],{"type":50,"tag":137,"props":225,"children":226},{},[227],{"type":55,"value":228},"score = best.get(\"score_1\", best.get(\"score\"))   # legacy defensiveness\n",{"type":50,"tag":137,"props":230,"children":231},{"class":139,"line":168},[232],{"type":50,"tag":137,"props":233,"children":234},{},[235],{"type":55,"value":236},"acf_hex = best[\"params\"]                          # hex string\n",{"type":50,"tag":57,"props":238,"children":239},{},[240,246,248,254,256,262],{"type":50,"tag":86,"props":241,"children":243},{"className":242},[],[244],{"type":55,"value":245},"score_1",{"type":55,"value":247}," (with underscore-one) is the canonical key — it matches the\nmulti-objective convention ",{"type":50,"tag":86,"props":249,"children":251},{"className":250},[],[252],{"type":55,"value":253},"score_N",{"type":55,"value":255},". Older code sometimes uses plain ",{"type":50,"tag":86,"props":257,"children":259},{"className":258},[],[260],{"type":55,"value":261},"score",{"type":55,"value":263},";\nthe fallback above handles both shapes.",{"type":50,"tag":57,"props":265,"children":266},{},[267],{"type":55,"value":268},"For top-K:",{"type":50,"tag":126,"props":270,"children":272},{"className":128,"code":271,"language":130,"meta":131,"style":131},"import pandas as pd\ndf_valid = df[pd.to_numeric(df[\"score_1\"], errors=\"coerce\") \u003C 1e10]\ntop_k = df_valid.nsmallest(5, \"score_1\")          # nlargest for MAX problems\n",[273],{"type":50,"tag":86,"props":274,"children":275},{"__ignoreMap":131},[276,284,292],{"type":50,"tag":137,"props":277,"children":278},{"class":139,"line":140},[279],{"type":50,"tag":137,"props":280,"children":281},{},[282],{"type":55,"value":283},"import pandas as pd\n",{"type":50,"tag":137,"props":285,"children":286},{"class":139,"line":149},[287],{"type":50,"tag":137,"props":288,"children":289},{},[290],{"type":55,"value":291},"df_valid = df[pd.to_numeric(df[\"score_1\"], errors=\"coerce\") \u003C 1e10]\n",{"type":50,"tag":137,"props":293,"children":294},{"class":139,"line":159},[295],{"type":50,"tag":137,"props":296,"children":297},{},[298],{"type":55,"value":299},"top_k = df_valid.nsmallest(5, \"score_1\")          # nlargest for MAX problems\n",{"type":50,"tag":57,"props":301,"children":302},{},[303],{"type":50,"tag":63,"props":304,"children":305},{},[306],{"type":55,"value":307},"Multi-objective:",{"type":50,"tag":126,"props":309,"children":311},{"className":128,"code":310,"language":130,"meta":131,"style":131},"front = results.pareto_front()   # raises if num_objectives == 1\nfor candidate in front:\n    print(candidate[\"score_1\"], candidate[\"score_2\"], candidate[\"params\"])\n",[312],{"type":50,"tag":86,"props":313,"children":314},{"__ignoreMap":131},[315,323,331],{"type":50,"tag":137,"props":316,"children":317},{"class":139,"line":140},[318],{"type":50,"tag":137,"props":319,"children":320},{},[321],{"type":55,"value":322},"front = results.pareto_front()   # raises if num_objectives == 1\n",{"type":50,"tag":137,"props":324,"children":325},{"class":139,"line":149},[326],{"type":50,"tag":137,"props":327,"children":328},{},[329],{"type":55,"value":330},"for candidate in front:\n",{"type":50,"tag":137,"props":332,"children":333},{"class":139,"line":159},[334],{"type":50,"tag":137,"props":335,"children":336},{},[337],{"type":55,"value":338},"    print(candidate[\"score_1\"], candidate[\"score_2\"], candidate[\"params\"])\n",{"type":50,"tag":57,"props":340,"children":341},{},[342,347,349,355,357,363],{"type":50,"tag":63,"props":343,"children":344},{},[345],{"type":55,"value":346},"Mixed user+compiler search space:",{"type":55,"value":348}," results carry separate keys —\n",{"type":50,"tag":86,"props":350,"children":352},{"className":351},[],[353],{"type":55,"value":354},"best[\"user_space\"]",{"type":55,"value":356}," for the user-side knobs, ",{"type":50,"tag":86,"props":358,"children":360},{"className":359},[],[361],{"type":55,"value":362},"best[\"params\"]",{"type":55,"value":364}," for the ACF\nhex. Save both.",{"type":50,"tag":119,"props":366,"children":368},{"id":367},"_3-re-measure-on-fresh-cache-the-actual-validation",[369],{"type":55,"value":370},"3. Re-measure on fresh cache (the actual validation)",{"type":50,"tag":372,"props":373,"children":374},"table",{},[375,409],{"type":50,"tag":376,"props":377,"children":378},"thead",{},[379],{"type":50,"tag":380,"props":381,"children":382},"tr",{},[383,389,394,399,404],{"type":50,"tag":384,"props":385,"children":386},"th",{},[387],{"type":55,"value":388},"Stage",{"type":50,"tag":384,"props":390,"children":391},{},[392],{"type":55,"value":393},"Warmup",{"type":50,"tag":384,"props":395,"children":396},{},[397],{"type":55,"value":398},"Trials",{"type":50,"tag":384,"props":400,"children":401},{},[402],{"type":55,"value":403},"Cache",{"type":50,"tag":384,"props":405,"children":406},{},[407],{"type":55,"value":408},"GPU clocks",{"type":50,"tag":410,"props":411,"children":412},"tbody",{},[413,449],{"type":50,"tag":380,"props":414,"children":415},{},[416,429,434,439,444],{"type":50,"tag":417,"props":418,"children":419},"td",{},[420,422,427],{"type":55,"value":421},"Optimization (during ",{"type":50,"tag":86,"props":423,"children":425},{"className":424},[],[426],{"type":55,"value":91},{"type":55,"value":428},")",{"type":50,"tag":417,"props":430,"children":431},{},[432],{"type":55,"value":433},"5-25",{"type":50,"tag":417,"props":435,"children":436},{},[437],{"type":55,"value":438},"5-15",{"type":50,"tag":417,"props":440,"children":441},{},[442],{"type":55,"value":443},"per-eval",{"type":50,"tag":417,"props":445,"children":446},{},[447],{"type":55,"value":448},"recommended locked",{"type":50,"tag":380,"props":450,"children":451},{},[452,460,468,476,481],{"type":50,"tag":417,"props":453,"children":454},{},[455],{"type":50,"tag":63,"props":456,"children":457},{},[458],{"type":55,"value":459},"Validation",{"type":50,"tag":417,"props":461,"children":462},{},[463],{"type":50,"tag":63,"props":464,"children":465},{},[466],{"type":55,"value":467},"≥50",{"type":50,"tag":417,"props":469,"children":470},{},[471],{"type":50,"tag":63,"props":472,"children":473},{},[474],{"type":55,"value":475},"≥100",{"type":50,"tag":417,"props":477,"children":478},{},[479],{"type":55,"value":480},"per-measurement",{"type":50,"tag":417,"props":482,"children":483},{},[484],{"type":50,"tag":63,"props":485,"children":486},{},[487],{"type":55,"value":488},"must be locked",{"type":50,"tag":57,"props":490,"children":491},{},[492],{"type":55,"value":493},"Both the baseline (no ACF) and each top-K candidate are re-measured at\nvalidation N. The optimization-time measurement is too noisy to ship from.",{"type":50,"tag":119,"props":495,"children":497},{"id":496},"_4-statistical-gate-the-ship-rule",[498],{"type":55,"value":499},"4. Statistical gate — the ship rule",{"type":50,"tag":126,"props":501,"children":503},{"className":128,"code":502,"language":130,"meta":131,"style":131},"import numpy as np\nfrom scipy import stats\n\ndef validate_speedup(baseline_ms: np.ndarray, optimized_ms: np.ndarray) -> dict:\n    t, p = stats.ttest_ind(baseline_ms, optimized_ms, equal_var=False)   # Welch's\n    b_mean, b_std = baseline_ms.mean(),  baseline_ms.std(ddof=1)\n    o_mean, o_std = optimized_ms.mean(), optimized_ms.std(ddof=1)\n    pooled = np.sqrt((b_std**2 + o_std**2) \u002F 2)\n    d = (b_mean - o_mean) \u002F pooled if pooled > 0 else 0.0\n    return {\n        \"speedup_mean\":  b_mean \u002F o_mean,\n        \"speedup_median\": np.median(baseline_ms) \u002F np.median(optimized_ms),\n        \"p_value\":       float(p),\n        \"cohens_d\":      float(d),\n        \"significant\":   bool(p \u003C 0.05 and o_mean \u003C b_mean and d > 0.2),\n        \"baseline\":  {\"mean\": b_mean, \"std\": b_std,\n                      \"p5\": np.percentile(baseline_ms,  5),\n                      \"p95\": np.percentile(baseline_ms, 95)},\n        \"optimized\": {\"mean\": o_mean, \"std\": o_std,\n                      \"p5\": np.percentile(optimized_ms,  5),\n                      \"p95\": np.percentile(optimized_ms, 95)},\n    }\n",[504],{"type":50,"tag":86,"props":505,"children":506},{"__ignoreMap":131},[507,515,523,530,538,546,555,564,572,581,590,599,608,617,626,635,644,653,662,671,680,689],{"type":50,"tag":137,"props":508,"children":509},{"class":139,"line":140},[510],{"type":50,"tag":137,"props":511,"children":512},{},[513],{"type":55,"value":514},"import numpy as np\n",{"type":50,"tag":137,"props":516,"children":517},{"class":139,"line":149},[518],{"type":50,"tag":137,"props":519,"children":520},{},[521],{"type":55,"value":522},"from scipy import stats\n",{"type":50,"tag":137,"props":524,"children":525},{"class":139,"line":159},[526],{"type":50,"tag":137,"props":527,"children":528},{"emptyLinePlaceholder":153},[529],{"type":55,"value":156},{"type":50,"tag":137,"props":531,"children":532},{"class":139,"line":168},[533],{"type":50,"tag":137,"props":534,"children":535},{},[536],{"type":55,"value":537},"def validate_speedup(baseline_ms: np.ndarray, optimized_ms: np.ndarray) -> dict:\n",{"type":50,"tag":137,"props":539,"children":540},{"class":139,"line":177},[541],{"type":50,"tag":137,"props":542,"children":543},{},[544],{"type":55,"value":545},"    t, p = stats.ttest_ind(baseline_ms, optimized_ms, equal_var=False)   # Welch's\n",{"type":50,"tag":137,"props":547,"children":549},{"class":139,"line":548},6,[550],{"type":50,"tag":137,"props":551,"children":552},{},[553],{"type":55,"value":554},"    b_mean, b_std = baseline_ms.mean(),  baseline_ms.std(ddof=1)\n",{"type":50,"tag":137,"props":556,"children":558},{"class":139,"line":557},7,[559],{"type":50,"tag":137,"props":560,"children":561},{},[562],{"type":55,"value":563},"    o_mean, o_std = optimized_ms.mean(), optimized_ms.std(ddof=1)\n",{"type":50,"tag":137,"props":565,"children":566},{"class":139,"line":27},[567],{"type":50,"tag":137,"props":568,"children":569},{},[570],{"type":55,"value":571},"    pooled = np.sqrt((b_std**2 + o_std**2) \u002F 2)\n",{"type":50,"tag":137,"props":573,"children":575},{"class":139,"line":574},9,[576],{"type":50,"tag":137,"props":577,"children":578},{},[579],{"type":55,"value":580},"    d = (b_mean - o_mean) \u002F pooled if pooled > 0 else 0.0\n",{"type":50,"tag":137,"props":582,"children":584},{"class":139,"line":583},10,[585],{"type":50,"tag":137,"props":586,"children":587},{},[588],{"type":55,"value":589},"    return {\n",{"type":50,"tag":137,"props":591,"children":593},{"class":139,"line":592},11,[594],{"type":50,"tag":137,"props":595,"children":596},{},[597],{"type":55,"value":598},"        \"speedup_mean\":  b_mean \u002F o_mean,\n",{"type":50,"tag":137,"props":600,"children":602},{"class":139,"line":601},12,[603],{"type":50,"tag":137,"props":604,"children":605},{},[606],{"type":55,"value":607},"        \"speedup_median\": np.median(baseline_ms) \u002F np.median(optimized_ms),\n",{"type":50,"tag":137,"props":609,"children":611},{"class":139,"line":610},13,[612],{"type":50,"tag":137,"props":613,"children":614},{},[615],{"type":55,"value":616},"        \"p_value\":       float(p),\n",{"type":50,"tag":137,"props":618,"children":620},{"class":139,"line":619},14,[621],{"type":50,"tag":137,"props":622,"children":623},{},[624],{"type":55,"value":625},"        \"cohens_d\":      float(d),\n",{"type":50,"tag":137,"props":627,"children":629},{"class":139,"line":628},15,[630],{"type":50,"tag":137,"props":631,"children":632},{},[633],{"type":55,"value":634},"        \"significant\":   bool(p \u003C 0.05 and o_mean \u003C b_mean and d > 0.2),\n",{"type":50,"tag":137,"props":636,"children":638},{"class":139,"line":637},16,[639],{"type":50,"tag":137,"props":640,"children":641},{},[642],{"type":55,"value":643},"        \"baseline\":  {\"mean\": b_mean, \"std\": b_std,\n",{"type":50,"tag":137,"props":645,"children":647},{"class":139,"line":646},17,[648],{"type":50,"tag":137,"props":649,"children":650},{},[651],{"type":55,"value":652},"                      \"p5\": np.percentile(baseline_ms,  5),\n",{"type":50,"tag":137,"props":654,"children":656},{"class":139,"line":655},18,[657],{"type":50,"tag":137,"props":658,"children":659},{},[660],{"type":55,"value":661},"                      \"p95\": np.percentile(baseline_ms, 95)},\n",{"type":50,"tag":137,"props":663,"children":665},{"class":139,"line":664},19,[666],{"type":50,"tag":137,"props":667,"children":668},{},[669],{"type":55,"value":670},"        \"optimized\": {\"mean\": o_mean, \"std\": o_std,\n",{"type":50,"tag":137,"props":672,"children":674},{"class":139,"line":673},20,[675],{"type":50,"tag":137,"props":676,"children":677},{},[678],{"type":55,"value":679},"                      \"p5\": np.percentile(optimized_ms,  5),\n",{"type":50,"tag":137,"props":681,"children":683},{"class":139,"line":682},21,[684],{"type":50,"tag":137,"props":685,"children":686},{},[687],{"type":55,"value":688},"                      \"p95\": np.percentile(optimized_ms, 95)},\n",{"type":50,"tag":137,"props":690,"children":692},{"class":139,"line":691},22,[693],{"type":50,"tag":137,"props":694,"children":695},{},[696],{"type":55,"value":697},"    }\n",{"type":50,"tag":57,"props":699,"children":700},{},[701,706,708,714,716,722,724,730,732,738,740,745],{"type":50,"tag":63,"props":702,"children":703},{},[704],{"type":55,"value":705},"Ship rule:",{"type":55,"value":707}," ",{"type":50,"tag":86,"props":709,"children":711},{"className":710},[],[712],{"type":55,"value":713},"p_value \u003C 0.05",{"type":55,"value":715}," AND ",{"type":50,"tag":86,"props":717,"children":719},{"className":718},[],[720],{"type":55,"value":721},"cohens_d > 0.2",{"type":55,"value":723}," (preferably ",{"type":50,"tag":86,"props":725,"children":727},{"className":726},[],[728],{"type":55,"value":729},"> 0.5",{"type":55,"value":731},")\nAND ",{"type":50,"tag":86,"props":733,"children":735},{"className":734},[],[736],{"type":55,"value":737},"optimized.mean \u003C baseline.mean",{"type":55,"value":739},". Anything weaker, ",{"type":50,"tag":63,"props":741,"children":742},{},[743],{"type":55,"value":744},"do not claim a\nspeedup",{"type":55,"value":746},".",{"type":50,"tag":119,"props":748,"children":750},{"id":749},"_5-three-false-positive-patterns-to-actively-check",[751],{"type":55,"value":752},"5. Three false-positive patterns to actively check",{"type":50,"tag":372,"props":754,"children":755},{},[756,792],{"type":50,"tag":376,"props":757,"children":758},{},[759],{"type":50,"tag":380,"props":760,"children":761},{},[762,767,772,777,782,787],{"type":50,"tag":384,"props":763,"children":764},{},[765],{"type":55,"value":766},"#",{"type":50,"tag":384,"props":768,"children":769},{},[770],{"type":55,"value":771},"Pattern",{"type":50,"tag":384,"props":773,"children":774},{},[775],{"type":55,"value":776},"Symptom",{"type":50,"tag":384,"props":778,"children":779},{},[780],{"type":55,"value":781},"Cause",{"type":50,"tag":384,"props":783,"children":784},{},[785],{"type":55,"value":786},"Check",{"type":50,"tag":384,"props":788,"children":789},{},[790],{"type":55,"value":791},"Disposition",{"type":50,"tag":410,"props":793,"children":794},{},[795,860,910],{"type":50,"tag":380,"props":796,"children":797},{},[798,803,811,832,837,855],{"type":50,"tag":417,"props":799,"children":800},{},[801],{"type":55,"value":802},"1",{"type":50,"tag":417,"props":804,"children":805},{},[806],{"type":50,"tag":63,"props":807,"children":808},{},[809],{"type":55,"value":810},"Lucky-min",{"type":50,"tag":417,"props":812,"children":813},{},[814,816,822,824,830],{"type":55,"value":815},"Optimized ",{"type":50,"tag":86,"props":817,"children":819},{"className":818},[],[820],{"type":55,"value":821},"min",{"type":55,"value":823}," is lower but ",{"type":50,"tag":86,"props":825,"children":827},{"className":826},[],[828],{"type":55,"value":829},"mean",{"type":55,"value":831}," is equal or worse",{"type":50,"tag":417,"props":833,"children":834},{},[835],{"type":55,"value":836},"Optimizer picked a config that occasionally runs fast",{"type":50,"tag":417,"props":838,"children":839},{},[840,842,847,849],{"type":55,"value":841},"Compare ",{"type":50,"tag":63,"props":843,"children":844},{},[845],{"type":55,"value":846},"means",{"type":55,"value":848},", not minimums; reject if ",{"type":50,"tag":86,"props":850,"children":852},{"className":851},[],[853],{"type":55,"value":854},"optimized.mean ≥ baseline.mean",{"type":50,"tag":417,"props":856,"children":857},{},[858],{"type":55,"value":859},"Reject.",{"type":50,"tag":380,"props":861,"children":862},{},[863,868,876,888,893,906],{"type":50,"tag":417,"props":864,"children":865},{},[866],{"type":55,"value":867},"2",{"type":50,"tag":417,"props":869,"children":870},{},[871],{"type":50,"tag":63,"props":872,"children":873},{},[874],{"type":55,"value":875},"Higher-variance",{"type":50,"tag":417,"props":877,"children":878},{},[879,880,886],{"type":55,"value":815},{"type":50,"tag":86,"props":881,"children":883},{"className":882},[],[884],{"type":55,"value":885},"p5-p95",{"type":55,"value":887}," range is wider than baseline with same mean",{"type":50,"tag":417,"props":889,"children":890},{},[891],{"type":55,"value":892},"ACF didn't speed anything up; just spread the distribution",{"type":50,"tag":417,"props":894,"children":895},{},[896,898,904],{"type":55,"value":897},"Compute ",{"type":50,"tag":86,"props":899,"children":901},{"className":900},[],[902],{"type":55,"value":903},"(p95 - p5)",{"type":55,"value":905}," for both; reject if optimized range is materially wider (>25%)",{"type":50,"tag":417,"props":907,"children":908},{},[909],{"type":55,"value":859},{"type":50,"tag":380,"props":911,"children":912},{},[913,918,926,931,936,955],{"type":50,"tag":417,"props":914,"children":915},{},[916],{"type":55,"value":917},"3",{"type":50,"tag":417,"props":919,"children":920},{},[921],{"type":50,"tag":63,"props":922,"children":923},{},[924],{"type":55,"value":925},"Multiple-comparisons",{"type":50,"tag":417,"props":927,"children":928},{},[929],{"type":55,"value":930},"Best of 500 evaluations looks 2-5% faster but doesn't reproduce",{"type":50,"tag":417,"props":932,"children":933},{},[934],{"type":55,"value":935},"With 500 evals some will look good by chance",{"type":50,"tag":417,"props":937,"children":938},{},[939,941,947,949,953],{"type":55,"value":940},"Re-measure top-K on a ",{"type":50,"tag":942,"props":943,"children":944},"em",{},[945],{"type":55,"value":946},"fresh",{"type":55,"value":948}," cache and ",{"type":50,"tag":942,"props":950,"children":951},{},[952],{"type":55,"value":946},{"type":55,"value":954}," trials; reject candidates that don't survive",{"type":50,"tag":417,"props":956,"children":957},{},[958],{"type":55,"value":859},{"type":50,"tag":119,"props":960,"children":962},{"id":961},"_6-save-the-validated-winner",[963],{"type":55,"value":964},"6. Save the validated winner",{"type":50,"tag":126,"props":966,"children":968},{"className":128,"code":967,"language":130,"meta":131,"style":131},"from compileiq.utils.helpers import save_compiler_config\nsave_compiler_config(\"best.acf\", best[\"params\"])\n\n# Mixed search spaces: persist the user_space knobs separately\nif \"user_space\" in best:\n    import json\n    Path(\"best.user_space.json\").write_text(json.dumps(best[\"user_space\"], indent=2))\n",[969],{"type":50,"tag":86,"props":970,"children":971},{"__ignoreMap":131},[972,980,988,995,1003,1011,1019],{"type":50,"tag":137,"props":973,"children":974},{"class":139,"line":140},[975],{"type":50,"tag":137,"props":976,"children":977},{},[978],{"type":55,"value":979},"from compileiq.utils.helpers import save_compiler_config\n",{"type":50,"tag":137,"props":981,"children":982},{"class":139,"line":149},[983],{"type":50,"tag":137,"props":984,"children":985},{},[986],{"type":55,"value":987},"save_compiler_config(\"best.acf\", best[\"params\"])\n",{"type":50,"tag":137,"props":989,"children":990},{"class":139,"line":159},[991],{"type":50,"tag":137,"props":992,"children":993},{"emptyLinePlaceholder":153},[994],{"type":55,"value":156},{"type":50,"tag":137,"props":996,"children":997},{"class":139,"line":168},[998],{"type":50,"tag":137,"props":999,"children":1000},{},[1001],{"type":55,"value":1002},"# Mixed search spaces: persist the user_space knobs separately\n",{"type":50,"tag":137,"props":1004,"children":1005},{"class":139,"line":177},[1006],{"type":50,"tag":137,"props":1007,"children":1008},{},[1009],{"type":55,"value":1010},"if \"user_space\" in best:\n",{"type":50,"tag":137,"props":1012,"children":1013},{"class":139,"line":548},[1014],{"type":50,"tag":137,"props":1015,"children":1016},{},[1017],{"type":55,"value":1018},"    import json\n",{"type":50,"tag":137,"props":1020,"children":1021},{"class":139,"line":557},[1022],{"type":50,"tag":137,"props":1023,"children":1024},{},[1025],{"type":55,"value":1026},"    Path(\"best.user_space.json\").write_text(json.dumps(best[\"user_space\"], indent=2))\n",{"type":50,"tag":119,"props":1028,"children":1030},{"id":1029},"_7-reproducibility-log",[1031],{"type":55,"value":1032},"7. Reproducibility log",{"type":50,"tag":57,"props":1034,"children":1035},{},[1036,1038,1044,1046,1052],{"type":55,"value":1037},"Append one row per candidate decision to ",{"type":50,"tag":86,"props":1039,"children":1041},{"className":1040},[],[1042],{"type":55,"value":1043},"validation-log.csv",{"type":55,"value":1045},". Fields, per\n",{"type":50,"tag":86,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":55,"value":1051},"docs\u002Fflashinfer_booster.md:135-148",{"type":55,"value":1053},":",{"type":50,"tag":78,"props":1055,"children":1056},{},[1057,1062,1067,1072,1077,1082,1087,1106,1111,1116,1121,1126,1131,1136],{"type":50,"tag":82,"props":1058,"children":1059},{},[1060],{"type":55,"value":1061},"timestamp (UTC ISO 8601)",{"type":50,"tag":82,"props":1063,"children":1064},{},[1065],{"type":55,"value":1066},"ACF filename + sha256",{"type":50,"tag":82,"props":1068,"children":1069},{},[1070],{"type":55,"value":1071},"manifest \u002F release version",{"type":50,"tag":82,"props":1073,"children":1074},{},[1075],{"type":55,"value":1076},"benchmark command",{"type":50,"tag":82,"props":1078,"children":1079},{},[1080],{"type":55,"value":1081},"GPU model + driver version",{"type":50,"tag":82,"props":1083,"children":1084},{},[1085],{"type":55,"value":1086},"CTK version (nvcc release)",{"type":50,"tag":82,"props":1088,"children":1089},{},[1090,1096,1098,1104],{"type":50,"tag":86,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":55,"value":1095},"ptxas",{"type":55,"value":1097},", ",{"type":50,"tag":86,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":55,"value":1103},"nvcc",{"type":55,"value":1105}," paths + versions",{"type":50,"tag":82,"props":1107,"children":1108},{},[1109],{"type":55,"value":1110},"framework version or commit (Triton \u002F Helion \u002F FlashInfer \u002F cuTeDSL)",{"type":50,"tag":82,"props":1112,"children":1113},{},[1114],{"type":55,"value":1115},"input shape",{"type":50,"tag":82,"props":1117,"children":1118},{},[1119],{"type":55,"value":1120},"baseline mean ± std",{"type":50,"tag":82,"props":1122,"children":1123},{},[1124],{"type":55,"value":1125},"candidate mean ± std",{"type":50,"tag":82,"props":1127,"children":1128},{},[1129],{"type":55,"value":1130},"p-value",{"type":50,"tag":82,"props":1132,"children":1133},{},[1134],{"type":55,"value":1135},"Cohen's d",{"type":50,"tag":82,"props":1137,"children":1138},{},[1139,1141,1147,1149],{"type":55,"value":1140},"decision: ",{"type":50,"tag":86,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":55,"value":1146},"KEPT",{"type":55,"value":1148}," or ",{"type":50,"tag":86,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":55,"value":1154},"REJECTED:\u003Creason>",{"type":50,"tag":57,"props":1156,"children":1157},{},[1158,1160,1166,1168,1174,1175,1181,1183,1189],{"type":55,"value":1159},"The ",{"type":50,"tag":86,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":55,"value":1165},"scripts\u002Fwelch_validate.py",{"type":55,"value":1167}," helper records the timing\u002Fstatistical fields,\nACF hash, benchmark commands, GPU\u002Ftoolchain metadata, and common environment\nvariables automatically. Pass ",{"type":50,"tag":86,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":55,"value":1173},"--manifest",{"type":55,"value":1097},{"type":50,"tag":86,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":55,"value":1180},"--framework",{"type":55,"value":1182},", and ",{"type":50,"tag":86,"props":1184,"children":1186},{"className":1185},[],[1187],{"type":55,"value":1188},"--input-shape",{"type":55,"value":1190},"\nfor workload-specific fields the helper cannot infer.",{"type":50,"tag":71,"props":1192,"children":1194},{"id":1193},"cli-helper",[1195],{"type":55,"value":1196},"CLI helper",{"type":50,"tag":126,"props":1198,"children":1202},{"className":1199,"code":1200,"language":1201,"meta":131,"style":131},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python scripts\u002Fwelch_validate.py \\\n    --acf best.acf \\\n    --baseline-cmd \"python bench.py --routine matmul\" \\\n    --opt-cmd \"PTXAS_OPTIONS='--apply-controls=best.acf' python bench.py --routine matmul\" \\\n    --trials 100 --warmup 50 \\\n    --score-regex 'mean: ([0-9.]+)' \\\n    --manifest booster-packs-YYYY.MM.DD \\\n    --framework \"flashinfer \u003Cversion>\" \\\n    --input-shape \"routine=matmul, M=..., N=..., K=...\" \\\n    --output validation-log.csv\n","bash",[1203],{"type":50,"tag":86,"props":1204,"children":1205},{"__ignoreMap":131},[1206,1226,1243,1271,1296,1324,1351,1368,1393,1418],{"type":50,"tag":137,"props":1207,"children":1208},{"class":139,"line":140},[1209,1214,1220],{"type":50,"tag":137,"props":1210,"children":1212},{"style":1211},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1213],{"type":55,"value":130},{"type":50,"tag":137,"props":1215,"children":1217},{"style":1216},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1218],{"type":55,"value":1219}," scripts\u002Fwelch_validate.py",{"type":50,"tag":137,"props":1221,"children":1223},{"style":1222},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1224],{"type":55,"value":1225}," \\\n",{"type":50,"tag":137,"props":1227,"children":1228},{"class":139,"line":149},[1229,1234,1239],{"type":50,"tag":137,"props":1230,"children":1231},{"style":1216},[1232],{"type":55,"value":1233},"    --acf",{"type":50,"tag":137,"props":1235,"children":1236},{"style":1216},[1237],{"type":55,"value":1238}," best.acf",{"type":50,"tag":137,"props":1240,"children":1241},{"style":1222},[1242],{"type":55,"value":1225},{"type":50,"tag":137,"props":1244,"children":1245},{"class":139,"line":159},[1246,1251,1257,1262,1267],{"type":50,"tag":137,"props":1247,"children":1248},{"style":1216},[1249],{"type":55,"value":1250},"    --baseline-cmd",{"type":50,"tag":137,"props":1252,"children":1254},{"style":1253},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1255],{"type":55,"value":1256}," \"",{"type":50,"tag":137,"props":1258,"children":1259},{"style":1216},[1260],{"type":55,"value":1261},"python bench.py --routine matmul",{"type":50,"tag":137,"props":1263,"children":1264},{"style":1253},[1265],{"type":55,"value":1266},"\"",{"type":50,"tag":137,"props":1268,"children":1269},{"style":1222},[1270],{"type":55,"value":1225},{"type":50,"tag":137,"props":1272,"children":1273},{"class":139,"line":168},[1274,1279,1283,1288,1292],{"type":50,"tag":137,"props":1275,"children":1276},{"style":1216},[1277],{"type":55,"value":1278},"    --opt-cmd",{"type":50,"tag":137,"props":1280,"children":1281},{"style":1253},[1282],{"type":55,"value":1256},{"type":50,"tag":137,"props":1284,"children":1285},{"style":1216},[1286],{"type":55,"value":1287},"PTXAS_OPTIONS='--apply-controls=best.acf' python bench.py --routine matmul",{"type":50,"tag":137,"props":1289,"children":1290},{"style":1253},[1291],{"type":55,"value":1266},{"type":50,"tag":137,"props":1293,"children":1294},{"style":1222},[1295],{"type":55,"value":1225},{"type":50,"tag":137,"props":1297,"children":1298},{"class":139,"line":177},[1299,1304,1310,1315,1320],{"type":50,"tag":137,"props":1300,"children":1301},{"style":1216},[1302],{"type":55,"value":1303},"    --trials",{"type":50,"tag":137,"props":1305,"children":1307},{"style":1306},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1308],{"type":55,"value":1309}," 100",{"type":50,"tag":137,"props":1311,"children":1312},{"style":1216},[1313],{"type":55,"value":1314}," --warmup",{"type":50,"tag":137,"props":1316,"children":1317},{"style":1306},[1318],{"type":55,"value":1319}," 50",{"type":50,"tag":137,"props":1321,"children":1322},{"style":1222},[1323],{"type":55,"value":1225},{"type":50,"tag":137,"props":1325,"children":1326},{"class":139,"line":548},[1327,1332,1337,1342,1347],{"type":50,"tag":137,"props":1328,"children":1329},{"style":1216},[1330],{"type":55,"value":1331},"    --score-regex",{"type":50,"tag":137,"props":1333,"children":1334},{"style":1253},[1335],{"type":55,"value":1336}," '",{"type":50,"tag":137,"props":1338,"children":1339},{"style":1216},[1340],{"type":55,"value":1341},"mean: ([0-9.]+)",{"type":50,"tag":137,"props":1343,"children":1344},{"style":1253},[1345],{"type":55,"value":1346},"'",{"type":50,"tag":137,"props":1348,"children":1349},{"style":1222},[1350],{"type":55,"value":1225},{"type":50,"tag":137,"props":1352,"children":1353},{"class":139,"line":557},[1354,1359,1364],{"type":50,"tag":137,"props":1355,"children":1356},{"style":1216},[1357],{"type":55,"value":1358},"    --manifest",{"type":50,"tag":137,"props":1360,"children":1361},{"style":1216},[1362],{"type":55,"value":1363}," booster-packs-YYYY.MM.DD",{"type":50,"tag":137,"props":1365,"children":1366},{"style":1222},[1367],{"type":55,"value":1225},{"type":50,"tag":137,"props":1369,"children":1370},{"class":139,"line":27},[1371,1376,1380,1385,1389],{"type":50,"tag":137,"props":1372,"children":1373},{"style":1216},[1374],{"type":55,"value":1375},"    --framework",{"type":50,"tag":137,"props":1377,"children":1378},{"style":1253},[1379],{"type":55,"value":1256},{"type":50,"tag":137,"props":1381,"children":1382},{"style":1216},[1383],{"type":55,"value":1384},"flashinfer \u003Cversion>",{"type":50,"tag":137,"props":1386,"children":1387},{"style":1253},[1388],{"type":55,"value":1266},{"type":50,"tag":137,"props":1390,"children":1391},{"style":1222},[1392],{"type":55,"value":1225},{"type":50,"tag":137,"props":1394,"children":1395},{"class":139,"line":574},[1396,1401,1405,1410,1414],{"type":50,"tag":137,"props":1397,"children":1398},{"style":1216},[1399],{"type":55,"value":1400},"    --input-shape",{"type":50,"tag":137,"props":1402,"children":1403},{"style":1253},[1404],{"type":55,"value":1256},{"type":50,"tag":137,"props":1406,"children":1407},{"style":1216},[1408],{"type":55,"value":1409},"routine=matmul, M=..., N=..., K=...",{"type":50,"tag":137,"props":1411,"children":1412},{"style":1253},[1413],{"type":55,"value":1266},{"type":50,"tag":137,"props":1415,"children":1416},{"style":1222},[1417],{"type":55,"value":1225},{"type":50,"tag":137,"props":1419,"children":1420},{"class":139,"line":583},[1421,1426],{"type":50,"tag":137,"props":1422,"children":1423},{"style":1216},[1424],{"type":55,"value":1425},"    --output",{"type":50,"tag":137,"props":1427,"children":1428},{"style":1216},[1429],{"type":55,"value":1430}," validation-log.csv\n",{"type":50,"tag":57,"props":1432,"children":1433},{},[1434,1436,1441,1442,1447,1449,1455],{"type":55,"value":1435},"Prints ",{"type":50,"tag":86,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":55,"value":1146},{"type":55,"value":1148},{"type":50,"tag":86,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":55,"value":1154},{"type":55,"value":1448}," and appends a row to the log. Also\nimportable: ",{"type":50,"tag":86,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":55,"value":1454},"from welch_validate import validate_speedup",{"type":55,"value":746},{"type":50,"tag":71,"props":1457,"children":1459},{"id":1458},"self-test",[1460],{"type":55,"value":1461},"Self-test",{"type":50,"tag":126,"props":1463,"children":1465},{"className":1199,"code":1464,"language":1201,"meta":131,"style":131},"python scripts\u002Fwelch_validate.py --self-test\n",[1466],{"type":50,"tag":86,"props":1467,"children":1468},{"__ignoreMap":131},[1469],{"type":50,"tag":137,"props":1470,"children":1471},{"class":139,"line":140},[1472,1476,1480],{"type":50,"tag":137,"props":1473,"children":1474},{"style":1211},[1475],{"type":55,"value":130},{"type":50,"tag":137,"props":1477,"children":1478},{"style":1216},[1479],{"type":55,"value":1219},{"type":50,"tag":137,"props":1481,"children":1482},{"style":1216},[1483],{"type":55,"value":1484}," --self-test\n",{"type":50,"tag":57,"props":1486,"children":1487},{},[1488,1490,1496,1498,1504],{"type":55,"value":1489},"Synthesizes two identical normal distributions, asserts the statistical gate\nreturns ",{"type":50,"tag":86,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":55,"value":1495},"significant=False",{"type":55,"value":1497},". Then differs them, asserts ",{"type":50,"tag":86,"props":1499,"children":1501},{"className":1500},[],[1502],{"type":55,"value":1503},"significant=True",{"type":55,"value":1505},".\nCatches misconfigured scipy\u002Fnumpy before a real validation.",{"type":50,"tag":71,"props":1507,"children":1509},{"id":1508},"gotchas",[1510],{"type":55,"value":1511},"Gotchas",{"type":50,"tag":78,"props":1513,"children":1514},{},[1515,1546,1589,1631],{"type":50,"tag":82,"props":1516,"children":1517},{},[1518,1536,1538,1544],{"type":50,"tag":63,"props":1519,"children":1520},{},[1521,1527,1529,1535],{"type":50,"tag":86,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":55,"value":1526},"pareto_front()",{"type":55,"value":1528}," raises if ",{"type":50,"tag":86,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":55,"value":1534},"num_objectives == 1",{"type":55,"value":746},{"type":55,"value":1537}," Guard with\n",{"type":50,"tag":86,"props":1539,"children":1541},{"className":1540},[],[1542],{"type":55,"value":1543},"if results.num_scores > 1:",{"type":55,"value":1545}," or use try\u002Fexcept.",{"type":50,"tag":82,"props":1547,"children":1548},{},[1549,1565,1567,1572,1574,1579,1581,1587],{"type":50,"tag":63,"props":1550,"children":1551},{},[1552,1557,1559,1564],{"type":50,"tag":86,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":55,"value":245},{"type":55,"value":1558}," vs ",{"type":50,"tag":86,"props":1560,"children":1562},{"className":1561},[],[1563],{"type":55,"value":261},{"type":55,"value":746},{"type":55,"value":1566}," Current API is ",{"type":50,"tag":86,"props":1568,"children":1570},{"className":1569},[],[1571],{"type":55,"value":245},{"type":55,"value":1573},". Some older results\nexporters used plain ",{"type":50,"tag":86,"props":1575,"children":1577},{"className":1576},[],[1578],{"type":55,"value":261},{"type":55,"value":1580},". The defensive read pattern\n",{"type":50,"tag":86,"props":1582,"children":1584},{"className":1583},[],[1585],{"type":55,"value":1586},"best.get(\"score_1\", best.get(\"score\"))",{"type":55,"value":1588}," handles both.",{"type":50,"tag":82,"props":1590,"children":1591},{},[1592,1597,1599,1605,1607,1613,1615,1621,1623,1629],{"type":50,"tag":63,"props":1593,"children":1594},{},[1595],{"type":55,"value":1596},"Don't validate on the same cache the search used.",{"type":55,"value":1598}," With ",{"type":50,"tag":86,"props":1600,"children":1602},{"className":1601},[],[1603],{"type":55,"value":1604},"CIQ_KEEP_CACHE=1",{"type":55,"value":1606},"\nactive during search, validation must explicitly wipe ",{"type":50,"tag":86,"props":1608,"children":1610},{"className":1609},[],[1611],{"type":55,"value":1612},"~\u002F.cache\u002Fcompileiq",{"type":55,"value":1614},"\nor use a fresh ",{"type":50,"tag":86,"props":1616,"children":1618},{"className":1617},[],[1619],{"type":55,"value":1620},"TRITON_CACHE_DIR",{"type":55,"value":1622}," and ",{"type":50,"tag":86,"props":1624,"children":1626},{"className":1625},[],[1627],{"type":55,"value":1628},"HELION_SKIP_CACHE=1",{"type":55,"value":1630},". Otherwise the\noptimization-time numbers re-appear and you're not validating anything.",{"type":50,"tag":82,"props":1632,"children":1633},{},[1634,1639],{"type":50,"tag":63,"props":1635,"children":1636},{},[1637],{"type":55,"value":1638},"Validation N is independent of optimization N.",{"type":55,"value":1640}," Even if the search used\nN=5 per evaluation, validation needs N ≥ 100. Don't try to be clever and\nreuse search-time samples.",{"type":50,"tag":71,"props":1642,"children":1644},{"id":1643},"next",[1645],{"type":55,"value":1646},"Next",{"type":50,"tag":78,"props":1648,"children":1649},{},[1650,1668,1681],{"type":50,"tag":82,"props":1651,"children":1652},{},[1653,1655,1661,1662,1667],{"type":55,"value":1654},"If the validated speedup ships: commit ",{"type":50,"tag":86,"props":1656,"children":1658},{"className":1657},[],[1659],{"type":55,"value":1660},"best.acf",{"type":55,"value":1622},{"type":50,"tag":86,"props":1663,"children":1665},{"className":1664},[],[1666],{"type":55,"value":1043},{"type":55,"value":746},{"type":50,"tag":82,"props":1669,"children":1670},{},[1671,1673,1679],{"type":55,"value":1672},"If validation fails: ",{"type":50,"tag":86,"props":1674,"children":1676},{"className":1675},[],[1677],{"type":55,"value":1678},"compileiq-debug",{"type":55,"value":1680}," for diagnosis.",{"type":50,"tag":82,"props":1682,"children":1683},{},[1684,1686,1692,1694,1700,1702,1708],{"type":55,"value":1685},"For more thorough exploration: re-run ",{"type":50,"tag":86,"props":1687,"children":1689},{"className":1688},[],[1690],{"type":55,"value":1691},"compileiq-run-search",{"type":55,"value":1693}," with bigger\n",{"type":50,"tag":86,"props":1695,"children":1697},{"className":1696},[],[1698],{"type":55,"value":1699},"pool_size",{"type":55,"value":1701},"\u002F",{"type":50,"tag":86,"props":1703,"children":1705},{"className":1704},[],[1706],{"type":55,"value":1707},"generations",{"type":55,"value":746},{"type":50,"tag":1710,"props":1711,"children":1712},"style",{},[1713],{"type":55,"value":1714},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1716,"total":557},[1717,1729,1742,1754,1768,1779,1791],{"slug":1718,"name":1718,"fn":1719,"description":1720,"org":1721,"tags":1722,"stars":23,"repoUrl":24,"updatedAt":1728},"compileiq-author-objective","author CompileIQ objective functions","Use when writing the objective_function= passed to Search(). Covers the two legal signatures (compiler-only str vs mixed list), the baseline-knockout branch, per-eval cache busting, framework-specific --apply-controls injection (raw PTXAS, NVCC, Triton, Helion, cuTeDSL\u002FFA4, FlashInfer), correctness-before-timing, INVALID_SCORE handling, and the Debug-pack O0\u002FO3 ACF-injection canary that must pass before launching a search. Triggers on \"objective function\", \"apply-controls\", \"INVALID_SCORE\", \"save_compiler_config\", \"baseline knockout\", \"BASELINE_CONFIG\", \"every config returns the same score\", \"TypeError fromhex\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1723,1726,1727],{"name":1724,"slug":1725,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:32:10.176779",{"slug":1730,"name":1730,"fn":1731,"description":1732,"org":1733,"tags":1734,"stars":23,"repoUrl":24,"updatedAt":1741},"compileiq-booster-pack","apply CompileIQ booster packs to compilers","Use BEFORE running a full CompileIQ search. Walks through downloading a Booster Pack from NVIDIA\u002FCompileIQ GitHub Releases, applying ACF candidates one at a time to the user's compiler (raw PTXAS, NVCC, Triton, Helion, FlashInfer), and keeping only candidates that compile, pass correctness, and beat the no-ACF baseline. Includes the mandatory Debug-pack O0\u002FO3 ACF-injection canary that proves the ACF is reaching PTXAS. Triggers on \"booster pack\", \"ACF\", \"apply-controls\", \"speed up without searching\", \"helion fp8\", \"flashinfer batch decode\", \"debug pack\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1735,1736,1737,1740],{"name":1724,"slug":1725,"type":15},{"name":9,"slug":8,"type":15},{"name":1738,"slug":1739,"type":15},"Optimization","optimization",{"name":13,"slug":14,"type":15},"2026-07-14T05:32:12.791444",{"slug":1743,"name":1743,"fn":1744,"description":1745,"org":1746,"tags":1747,"stars":23,"repoUrl":24,"updatedAt":1753},"compileiq-bootstrap","bootstrap CompileIQ project environments","Use when starting a fresh CompileIQ project, hitting a socket timeout, or before running any other compileiq-* skill. Verifies CUDA 13.3+, ptxas, GPU access, that `from compileiq.ciq import Search` and friends resolve, and that `PtxasSearchSpace().retrieve()` returns a real path. Documents the env vars that control timeouts, caching, and search-space mirroring. Triggers on \"set up compileiq\", \"compileiq doesn't work\", \"socket timeout\", \"where do search spaces come from\", \"air-gapped compileiq\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1748,1749,1750],{"name":1724,"slug":1725,"type":15},{"name":9,"slug":8,"type":15},{"name":1751,"slug":1752,"type":15},"Onboarding","onboarding","2026-07-14T05:32:11.472149",{"slug":1678,"name":1678,"fn":1755,"description":1756,"org":1757,"tags":1758,"stars":23,"repoUrl":24,"updatedAt":1767},"debug CompileIQ search and evaluation failures","Use when something is wrong: Search() hangs, all evaluations return INVALID_SCORE, scores aren't improving, every config returns the same number, ptxas errors fill the log, CV% is too high, or a winning ACF candidate needs NCU profiling to explain. Symptom-indexed table on top. Triggers on \"compileiq hang\", \"socket timeout\", \"INVALID_SCORE\", \"not converging\", \"every score is the same\", \"TypeError fromhex\", \"ncu profile\", \"register spill\", \"ptxas error\", \"not in expected format\", \"high cv\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1759,1762,1765,1766],{"name":1760,"slug":1761,"type":15},"Debugging","debugging",{"name":1763,"slug":1764,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:32:05.08078",{"slug":1691,"name":1691,"fn":1769,"description":1770,"org":1771,"tags":1772,"stars":23,"repoUrl":24,"updatedAt":1778},"execute CompileIQ search workflows","Use when composing the Search(...) call and calling .start(). Covers the four worker classes (MultiProcessWorker \u002F IsoMultiProcessWorker \u002F RayWorker \u002F AsyncWorker) and when to pick each, SearchConfiguration sizing rules, dump_results checkpointing, tracker_config choice (Disabled \u002F Loguru \u002F MLflow), num_workers\u002Ftask_timeout semantics, and GPU clock locking for stable measurements. Triggers on \"Search()\", \"tuner.start()\", \"pool_size\", \"num_workers\", \"task_timeout\", \"IsoMultiProcessWorker\", \"RayWorker\", \"dump_results\", \"MLflow\", \"GPU clocks\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1773,1776,1777],{"name":1774,"slug":1775,"type":15},"Automation","automation",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:32:08.913442",{"slug":1780,"name":1780,"fn":1781,"description":1782,"org":1783,"tags":1784,"stars":23,"repoUrl":24,"updatedAt":1790},"compileiq-search-space","configure CompileIQ search spaces","Use when picking the search_space= argument for Search(). Covers the three provider classes (PtxasSearchSpace, NvccSearchSpace, LocalSearchSpaceBin), how to pin a version\u002Fvariant\u002Ftag, the attention-focused 'att' variant for attention kernels (FlashAttention, GQA, MHA, MLA, FlashInfer Batch Decode), air-gapped mirroring via CIQ_SEARCH_SPACES_DIR, and custom user-defined search spaces built from compileiq.search_spaces.base primitives. Triggers on \"search space\", \"PtxasSearchSpace\", \"NvccSearchSpace\", \"air-gapped compileiq\", \"offline compileiq\", \"CIQ_SEARCH_SPACES_DIR\", \"attention variant\", \"ptxas att\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1785,1788,1789],{"name":1786,"slug":1787,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:32:07.605639",{"slug":4,"name":4,"fn":5,"description":6,"org":1792,"tags":1793,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1794,1795,1796,1797],{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"items":1799,"total":1951},[1800,1818,1835,1846,1858,1870,1883,1897,1908,1919,1933,1942],{"slug":1801,"name":1801,"fn":1802,"description":1803,"org":1804,"tags":1805,"stars":1815,"repoUrl":1816,"updatedAt":1817},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1806,1809,1812],{"name":1807,"slug":1808,"type":15},"Documentation","documentation",{"name":1810,"slug":1811,"type":15},"MCP","mcp",{"name":1813,"slug":1814,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1819,"name":1819,"fn":1820,"description":1821,"org":1822,"tags":1823,"stars":1832,"repoUrl":1833,"updatedAt":1834},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1824,1827,1830],{"name":1825,"slug":1826,"type":15},"Containers","containers",{"name":1828,"slug":1829,"type":15},"Deployment","deployment",{"name":1831,"slug":130,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1836,"name":1836,"fn":1837,"description":1838,"org":1839,"tags":1840,"stars":1832,"repoUrl":1833,"updatedAt":1845},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1841,1844],{"name":1842,"slug":1843,"type":15},"CI\u002FCD","ci-cd",{"name":1828,"slug":1829,"type":15},"2026-07-14T05:25:59.97109",{"slug":1847,"name":1847,"fn":1848,"description":1849,"org":1850,"tags":1851,"stars":1832,"repoUrl":1833,"updatedAt":1857},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1852,1853,1854],{"name":1842,"slug":1843,"type":15},{"name":1828,"slug":1829,"type":15},{"name":1855,"slug":1856,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1859,"name":1859,"fn":1860,"description":1861,"org":1862,"tags":1863,"stars":1832,"repoUrl":1833,"updatedAt":1869},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1864,1865,1866],{"name":1760,"slug":1761,"type":15},{"name":1855,"slug":1856,"type":15},{"name":1867,"slug":1868,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1871,"name":1871,"fn":1872,"description":1873,"org":1874,"tags":1875,"stars":1832,"repoUrl":1833,"updatedAt":1882},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1876,1879],{"name":1877,"slug":1878,"type":15},"Best Practices","best-practices",{"name":1880,"slug":1881,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1884,"name":1884,"fn":1885,"description":1886,"org":1887,"tags":1888,"stars":1832,"repoUrl":1833,"updatedAt":1896},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1889,1892,1895],{"name":1890,"slug":1891,"type":15},"Machine Learning","machine-learning",{"name":1893,"slug":1894,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1898,"name":1898,"fn":1899,"description":1900,"org":1901,"tags":1902,"stars":1832,"repoUrl":1833,"updatedAt":1907},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1903,1904],{"name":17,"slug":18,"type":15},{"name":1905,"slug":1906,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1909,"name":1909,"fn":1910,"description":1911,"org":1912,"tags":1913,"stars":1832,"repoUrl":1833,"updatedAt":1918},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1914,1915],{"name":1828,"slug":1829,"type":15},{"name":1916,"slug":1917,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1920,"name":1920,"fn":1921,"description":1922,"org":1923,"tags":1924,"stars":1832,"repoUrl":1833,"updatedAt":1932},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1925,1928,1929],{"name":1926,"slug":1927,"type":15},"Code Review","code-review",{"name":1855,"slug":1856,"type":15},{"name":1930,"slug":1931,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1934,"name":1934,"fn":1935,"description":1936,"org":1937,"tags":1938,"stars":1832,"repoUrl":1833,"updatedAt":1941},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1939,1940],{"name":17,"slug":18,"type":15},{"name":1905,"slug":1906,"type":15},"2026-07-14T05:25:54.928983",{"slug":1943,"name":1943,"fn":1944,"description":1945,"org":1946,"tags":1947,"stars":1832,"repoUrl":1833,"updatedAt":1950},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1948,1949],{"name":1774,"slug":1775,"type":15},{"name":1842,"slug":1843,"type":15},"2026-07-30T05:29:03.275638",496]