[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-compileiq-run-search":3,"mdc-plwn94-key":31,"related-repo-nvidia-compileiq-run-search":1707,"related-org-nvidia-compileiq-run-search":1790},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"compileiq-run-search","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},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":9,"slug":8,"type":15},107,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FCompileIQ","2026-07-14T05:32:08.913442","Apache-2.0",8,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"An Optimizer for Nvidia Compilers.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FCompileIQ\u002Ftree\u002FHEAD\u002Fagent-skills\u002Fcompileiq-run-search","---\nname: compileiq-run-search\ndescription: >\n  Use when composing the Search(...) call and calling .start(). Covers the\n  four worker classes (MultiProcessWorker \u002F IsoMultiProcessWorker \u002F RayWorker\n  \u002F AsyncWorker) and when to pick each, SearchConfiguration sizing rules,\n  dump_results checkpointing, tracker_config choice (Disabled \u002F Loguru \u002F\n  MLflow), num_workers\u002Ftask_timeout semantics, and GPU clock locking for\n  stable measurements. Triggers on \"Search()\", \"tuner.start()\", \"pool_size\",\n  \"num_workers\", \"task_timeout\", \"IsoMultiProcessWorker\", \"RayWorker\",\n  \"dump_results\", \"MLflow\", \"GPU clocks\".\nwhen_to_use: |\n  - About to instantiate Search() and call .start().\n  - Search converges too slow \u002F too fast and the user is unsure how to size.\n  - Search is hanging on a few configs (need IsoMultiProcessWorker + timeout).\n  - Migrating from local to a Ray cluster.\nlicense: Apache-2.0\nmetadata:\n  version: \"1.0.0\"\n  author: NVIDIA CompileIQ\n  domain: compiler-optimization\nallowed-tools: Bash Read\npaths: [\"**\u002F*.py\"]\n---\n\n# compileiq-run-search\n\nAfter you have an objective function (from `compileiq-author-objective`) and\na search space (from `compileiq-search-space`), this skill helps you choose\nthe worker, size the configuration, and run the search safely.\n\n## When\n\n- About to instantiate `Search(...)` and call `.start()`.\n- Search is converging too fast or too slow and the user is unsure how to\n  re-size pool\u002Fgenerations.\n- Search hangs on individual configs and the worker doesn't kill them.\n- Scaling out from one GPU to a Ray cluster.\n\n## Worker selection\n\nPass either a built-in `WorkerTypes` enum value or the worker class itself to\n`Search(worker_type=...)`:\n\n```python\nfrom compileiq.types import WorkerTypes\nfrom compileiq.worker import (\n    MultiProcessWorker,    # default\n    IsoMultiProcessWorker, # spawns fresh process per task; kill-safe\n    RayWorker,             # distributed\n    AsyncWorker,           # asyncio for async def objectives\n)\n```\n\n| Situation | Worker class | Why |\n|---|---|---|\n| GPU kernel that may hang, OOM, or leak CUDA context | **`IsoMultiProcessWorker`** | One fresh process per task; parent kills on `task_timeout`. Defaults to `fork`. (`docs\u002Fworkers.md:42`) |\n| Triton mixed example on Blackwell-class GPUs | `WorkerTypes.ISOLATED` + `CIQ_PROCESS_MODE=spawn` | Isolates each evaluation and avoids leaking illegal memory access state across runs. |\n| Fast (\u003C100ms), stateless objective | `MultiProcessWorker` (default) | Reuses a pool; lower overhead. Defaults to `forkserver`. |\n| Multi-node \u002F multi-GPU cluster | `RayWorker` | User must set up Ray cluster + install compileiq on every worker. Both `num_workers` and `task_timeout` are ignored. (`docs\u002Fworkers.md:79-91`) |\n| I\u002FO-bound `async def` objective | `AsyncWorker` | Concurrency, not parallelism. Rare for GPU work. |\n\n**Default recommendation for compiler tuning of GPU kernels:**\n`IsoMultiProcessWorker` with `task_timeout` between **30s** (small kernels) and\n**180s** (large attention \u002F XLA HLO).\n\n## SearchConfiguration sizing\n\nReference: `compileiq\u002Ftypes.py:473-615`. Defaults auto-derive; only set what\nyou must.\n\n```python\nfrom compileiq.types import SearchConfiguration, ProblemType\n\nconfig = SearchConfiguration(\n    problem_type=ProblemType.MIN,   # MIN for latency; MAX for throughput\n    generations=10,                  # required, > 0\n    pool_size=15,                    # > 5; auto-derives if omitted\n    # cull_size auto-derives to 75% of pool, rounded down to even\n    # mutate_rate defaults to 0.25\n    # num_objectives defaults to 1\n    # normalize defaults to False (set True for cross-GPU runs)\n)\n```\n\n| Knob | Default | When to override |\n|---|---|---|\n| `generations` | required | 10 for initial exploration; 20-40 for a deep run. |\n| `pool_size` | auto (≥32) | 15 for tiny spaces; 32 for ≥1k design points; 64-128 for ≥10k. |\n| `cull_size` | 75% of pool, even | Almost never override directly. |\n| `mutate_rate` | 0.25 | Raise to 0.3-0.5 only if convergence stalls in early gens. |\n| `num_objectives` | 1 | Must equal `len(return_tuple)` from the objective. |\n| `normalize` | False | True when running across heterogeneous nodes or GPUs. |\n\n**Sanity rule of thumb:** if `pool_size * generations \u003C 50`, you are exploring,\nnot optimizing. If `> 2000`, you are probably overfitting to measurement noise\n— `compileiq-validate-result` will earn its keep there.\n\n## Search(...) constructor — every relevant kwarg\n\n```python\nfrom pathlib import Path\nfrom compileiq.ciq import Search\nfrom compileiq.search_spaces.compilers import PtxasSearchSpace\nfrom compileiq.tracker import LoguruTrackerConfig\n\ntuner = Search(\n    objective_function=objective,\n    search_space=PtxasSearchSpace(version=\"13.3\", variant=\"att\"),\n    search_config=config,\n    worker_type=IsoMultiProcessWorker,                 # or WorkerTypes.ISOLATED\n    tracker_config=LoguruTrackerConfig(sink=\"optimization.log\"),\n    dump_results=Path(\"results.csv\"),                  # ALWAYS set this\n    cache_folder=None,                                  # default ~\u002F.cache\u002Fcompileiq\n    disable_progress_bar=False,\n    exit_on_failure=True,\n    debug=False,\n)\n```\n\nAlways set `dump_results=Path(...)`. CSV is flushed every batch, so a crashed\nor killed run leaves recoverable state.\n\n## start(...) semantics\n\n```python\nresults = tuner.start(num_workers=4, task_timeout=120)\n```\n\n- `num_workers`: ignored by workers where `respects_num_workers=False`\n  (`RayWorker`, `AsyncWorker`); CompileIQ emits the warning\n  `\"num_workers is not supported by \u003CWorkerName>\"` (`compileiq\u002Fciq.py:449-451`)\n  so users recognize it.\n- `task_timeout`: ignored where `supports_timeout=False` (`RayWorker`).\n  Critical for `IsoMultiProcessWorker` — without it a hung config wedges that\n  branch.\n- Returns a `SearchResult`. Don't process inline; hand off to\n  `compileiq-validate-result`.\n\n## Tracker choice (one-line each)\n\n```python\nfrom compileiq.tracker import DisabledTrackerConfig, LoguruTrackerConfig, MLflowTrackerConfig\n```\n\n- `DisabledTrackerConfig()` — default, no overhead. Fine for one-off runs.\n- `LoguruTrackerConfig(sink=\"optimization.log\", level=\"INFO\")` —\n  recommended for serious campaigns. Negligible overhead.\n- `MLflowTrackerConfig(experiment_name=\"...\", tracking_uri=\"...\", run_name=\"...\")`\n  — when integrating with ML Ops; creates a nested MLflow run per evaluation.\n\n## Sample before you search\n\n`Search.sample(n)` returns `n` randomly sampled parameter dicts from the\nsearch space without running the search. Use it to:\n\n1. Confirm the search space resolves at all (cheaper than the bootstrap\n   round-trip; uses the in-memory state of `Search`).\n2. Eyeball that the dicts have the keys your objective expects.\n3. Feed a single sample into the objective by hand to verify it runs.\n\n```python\nsample = tuner.sample(1)[0]\nprint(sample)\nprint(objective(sample))   # should return a real float, not raise\n```\n\n## GPU clock locking (operator-level)\n\nStable measurements need locked clocks. Lock **before** `tuner.start()`,\nunlock via `atexit`. Requires sudo.\n\n```bash\nsudo nvidia-smi -pm 1\nMAX_GPU=$(nvidia-smi --query-gpu=clocks.max.graphics --format=csv,noheader,nounits | head -1)\nMAX_MEM=$(nvidia-smi --query-gpu=clocks.max.memory --format=csv,noheader,nounits | head -1)\nsudo nvidia-smi --lock-gpu-clocks=$MAX_GPU,$MAX_GPU --lock-memory-clocks=$MAX_MEM,$MAX_MEM\n```\n\n```python\nimport atexit, subprocess\ndef unlock():\n    subprocess.run([\"sudo\", \"nvidia-smi\", \"--reset-gpu-clocks\", \"--reset-memory-clocks\"],\n                   check=False)\natexit.register(unlock)\n```\n\nInside a CI container or a shared cluster where sudo isn't available, skip\nthis; report higher CV% to the validation skill so it knows to compensate.\n\n## Self-test\n\n```bash\npython scripts\u002Fsmoke_search.py\n```\n\nRuns a 2-generation search on `x**2 + y` with `MultiProcessWorker` and\nverifies `results.get_best_result()` returns a dict with `score_1` and `params`.\n\n## Gotchas\n\n- **Forgetting `task_timeout`** with `IsoMultiProcessWorker` is the most\n  common reason a search hangs for hours. The worker will *kill* a stuck\n  process but only after `task_timeout` elapses.\n- **`forkserver` issues** on some hosts manifest as `EOFError` or \"Broken pipe\"\n  on the first eval. Set `CIQ_PROCESS_MODE=spawn`.\n- **`num_workers > num_gpus`** is fine for fast CPU-side objectives but\n  oversubscribes GPUs for kernel objectives. For GPU kernels: pin\n  `CUDA_VISIBLE_DEVICES` inside the objective and set\n  `num_workers = num_gpus`.\n- **Don't put GPU-clock lock calls inside the objective.** They require sudo\n  and are per-host operator setup, not per-eval.\n\n## Next\n\n- After `.start()` returns: `compileiq-validate-result`.\n- If something's wrong: `compileiq-debug`.\n",{"data":32,"body":41},{"name":4,"description":6,"when_to_use":33,"license":23,"metadata":34,"allowed-tools":38,"paths":39},"- About to instantiate Search() and call .start().\n- Search converges too slow \u002F too fast and the user is unsure how to size.\n- Search is hanging on a few configs (need IsoMultiProcessWorker + timeout).\n- Migrating from local to a Ray cluster.\n",{"version":35,"author":36,"domain":37},"1.0.0","NVIDIA CompileIQ","compiler-optimization","Bash Read",[40],"**\u002F*.py",{"type":42,"children":43},"root",[44,51,74,81,122,128,149,225,443,479,485,498,596,763,797,803,950,963,969,983,1084,1090,1104,1140,1146,1165,1192,1223,1229,1257,1431,1478,1483,1489,1508,1549,1555,1662,1668,1701],{"type":45,"tag":46,"props":47,"children":48},"element","h1",{"id":4},[49],{"type":50,"value":4},"text",{"type":45,"tag":52,"props":53,"children":54},"p",{},[55,57,64,66,72],{"type":50,"value":56},"After you have an objective function (from ",{"type":45,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":50,"value":63},"compileiq-author-objective",{"type":50,"value":65},") and\na search space (from ",{"type":45,"tag":58,"props":67,"children":69},{"className":68},[],[70],{"type":50,"value":71},"compileiq-search-space",{"type":50,"value":73},"), this skill helps you choose\nthe worker, size the configuration, and run the search safely.",{"type":45,"tag":75,"props":76,"children":78},"h2",{"id":77},"when",[79],{"type":50,"value":80},"When",{"type":45,"tag":82,"props":83,"children":84},"ul",{},[85,107,112,117],{"type":45,"tag":86,"props":87,"children":88},"li",{},[89,91,97,99,105],{"type":50,"value":90},"About to instantiate ",{"type":45,"tag":58,"props":92,"children":94},{"className":93},[],[95],{"type":50,"value":96},"Search(...)",{"type":50,"value":98}," and call ",{"type":45,"tag":58,"props":100,"children":102},{"className":101},[],[103],{"type":50,"value":104},".start()",{"type":50,"value":106},".",{"type":45,"tag":86,"props":108,"children":109},{},[110],{"type":50,"value":111},"Search is converging too fast or too slow and the user is unsure how to\nre-size pool\u002Fgenerations.",{"type":45,"tag":86,"props":113,"children":114},{},[115],{"type":50,"value":116},"Search hangs on individual configs and the worker doesn't kill them.",{"type":45,"tag":86,"props":118,"children":119},{},[120],{"type":50,"value":121},"Scaling out from one GPU to a Ray cluster.",{"type":45,"tag":75,"props":123,"children":125},{"id":124},"worker-selection",[126],{"type":50,"value":127},"Worker selection",{"type":45,"tag":52,"props":129,"children":130},{},[131,133,139,141,147],{"type":50,"value":132},"Pass either a built-in ",{"type":45,"tag":58,"props":134,"children":136},{"className":135},[],[137],{"type":50,"value":138},"WorkerTypes",{"type":50,"value":140}," enum value or the worker class itself to\n",{"type":45,"tag":58,"props":142,"children":144},{"className":143},[],[145],{"type":50,"value":146},"Search(worker_type=...)",{"type":50,"value":148},":",{"type":45,"tag":150,"props":151,"children":156},"pre",{"className":152,"code":153,"language":154,"meta":155,"style":155},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from compileiq.types import WorkerTypes\nfrom compileiq.worker import (\n    MultiProcessWorker,    # default\n    IsoMultiProcessWorker, # spawns fresh process per task; kill-safe\n    RayWorker,             # distributed\n    AsyncWorker,           # asyncio for async def objectives\n)\n","python","",[157],{"type":45,"tag":58,"props":158,"children":159},{"__ignoreMap":155},[160,171,180,189,198,207,216],{"type":45,"tag":161,"props":162,"children":165},"span",{"class":163,"line":164},"line",1,[166],{"type":45,"tag":161,"props":167,"children":168},{},[169],{"type":50,"value":170},"from compileiq.types import WorkerTypes\n",{"type":45,"tag":161,"props":172,"children":174},{"class":163,"line":173},2,[175],{"type":45,"tag":161,"props":176,"children":177},{},[178],{"type":50,"value":179},"from compileiq.worker import (\n",{"type":45,"tag":161,"props":181,"children":183},{"class":163,"line":182},3,[184],{"type":45,"tag":161,"props":185,"children":186},{},[187],{"type":50,"value":188},"    MultiProcessWorker,    # default\n",{"type":45,"tag":161,"props":190,"children":192},{"class":163,"line":191},4,[193],{"type":45,"tag":161,"props":194,"children":195},{},[196],{"type":50,"value":197},"    IsoMultiProcessWorker, # spawns fresh process per task; kill-safe\n",{"type":45,"tag":161,"props":199,"children":201},{"class":163,"line":200},5,[202],{"type":45,"tag":161,"props":203,"children":204},{},[205],{"type":50,"value":206},"    RayWorker,             # distributed\n",{"type":45,"tag":161,"props":208,"children":210},{"class":163,"line":209},6,[211],{"type":45,"tag":161,"props":212,"children":213},{},[214],{"type":50,"value":215},"    AsyncWorker,           # asyncio for async def objectives\n",{"type":45,"tag":161,"props":217,"children":219},{"class":163,"line":218},7,[220],{"type":45,"tag":161,"props":221,"children":222},{},[223],{"type":50,"value":224},")\n",{"type":45,"tag":226,"props":227,"children":228},"table",{},[229,253],{"type":45,"tag":230,"props":231,"children":232},"thead",{},[233],{"type":45,"tag":234,"props":235,"children":236},"tr",{},[237,243,248],{"type":45,"tag":238,"props":239,"children":240},"th",{},[241],{"type":50,"value":242},"Situation",{"type":45,"tag":238,"props":244,"children":245},{},[246],{"type":50,"value":247},"Worker class",{"type":45,"tag":238,"props":249,"children":250},{},[251],{"type":50,"value":252},"Why",{"type":45,"tag":254,"props":255,"children":256},"tbody",{},[257,308,338,369,413],{"type":45,"tag":234,"props":258,"children":259},{},[260,266,279],{"type":45,"tag":261,"props":262,"children":263},"td",{},[264],{"type":50,"value":265},"GPU kernel that may hang, OOM, or leak CUDA context",{"type":45,"tag":261,"props":267,"children":268},{},[269],{"type":45,"tag":270,"props":271,"children":272},"strong",{},[273],{"type":45,"tag":58,"props":274,"children":276},{"className":275},[],[277],{"type":50,"value":278},"IsoMultiProcessWorker",{"type":45,"tag":261,"props":280,"children":281},{},[282,284,290,292,298,300,306],{"type":50,"value":283},"One fresh process per task; parent kills on ",{"type":45,"tag":58,"props":285,"children":287},{"className":286},[],[288],{"type":50,"value":289},"task_timeout",{"type":50,"value":291},". Defaults to ",{"type":45,"tag":58,"props":293,"children":295},{"className":294},[],[296],{"type":50,"value":297},"fork",{"type":50,"value":299},". (",{"type":45,"tag":58,"props":301,"children":303},{"className":302},[],[304],{"type":50,"value":305},"docs\u002Fworkers.md:42",{"type":50,"value":307},")",{"type":45,"tag":234,"props":309,"children":310},{},[311,316,333],{"type":45,"tag":261,"props":312,"children":313},{},[314],{"type":50,"value":315},"Triton mixed example on Blackwell-class GPUs",{"type":45,"tag":261,"props":317,"children":318},{},[319,325,327],{"type":45,"tag":58,"props":320,"children":322},{"className":321},[],[323],{"type":50,"value":324},"WorkerTypes.ISOLATED",{"type":50,"value":326}," + ",{"type":45,"tag":58,"props":328,"children":330},{"className":329},[],[331],{"type":50,"value":332},"CIQ_PROCESS_MODE=spawn",{"type":45,"tag":261,"props":334,"children":335},{},[336],{"type":50,"value":337},"Isolates each evaluation and avoids leaking illegal memory access state across runs.",{"type":45,"tag":234,"props":339,"children":340},{},[341,346,357],{"type":45,"tag":261,"props":342,"children":343},{},[344],{"type":50,"value":345},"Fast (\u003C100ms), stateless objective",{"type":45,"tag":261,"props":347,"children":348},{},[349,355],{"type":45,"tag":58,"props":350,"children":352},{"className":351},[],[353],{"type":50,"value":354},"MultiProcessWorker",{"type":50,"value":356}," (default)",{"type":45,"tag":261,"props":358,"children":359},{},[360,362,368],{"type":50,"value":361},"Reuses a pool; lower overhead. Defaults to ",{"type":45,"tag":58,"props":363,"children":365},{"className":364},[],[366],{"type":50,"value":367},"forkserver",{"type":50,"value":106},{"type":45,"tag":234,"props":370,"children":371},{},[372,377,386],{"type":45,"tag":261,"props":373,"children":374},{},[375],{"type":50,"value":376},"Multi-node \u002F multi-GPU cluster",{"type":45,"tag":261,"props":378,"children":379},{},[380],{"type":45,"tag":58,"props":381,"children":383},{"className":382},[],[384],{"type":50,"value":385},"RayWorker",{"type":45,"tag":261,"props":387,"children":388},{},[389,391,397,399,404,406,412],{"type":50,"value":390},"User must set up Ray cluster + install compileiq on every worker. Both ",{"type":45,"tag":58,"props":392,"children":394},{"className":393},[],[395],{"type":50,"value":396},"num_workers",{"type":50,"value":398}," and ",{"type":45,"tag":58,"props":400,"children":402},{"className":401},[],[403],{"type":50,"value":289},{"type":50,"value":405}," are ignored. (",{"type":45,"tag":58,"props":407,"children":409},{"className":408},[],[410],{"type":50,"value":411},"docs\u002Fworkers.md:79-91",{"type":50,"value":307},{"type":45,"tag":234,"props":414,"children":415},{},[416,429,438],{"type":45,"tag":261,"props":417,"children":418},{},[419,421,427],{"type":50,"value":420},"I\u002FO-bound ",{"type":45,"tag":58,"props":422,"children":424},{"className":423},[],[425],{"type":50,"value":426},"async def",{"type":50,"value":428}," objective",{"type":45,"tag":261,"props":430,"children":431},{},[432],{"type":45,"tag":58,"props":433,"children":435},{"className":434},[],[436],{"type":50,"value":437},"AsyncWorker",{"type":45,"tag":261,"props":439,"children":440},{},[441],{"type":50,"value":442},"Concurrency, not parallelism. Rare for GPU work.",{"type":45,"tag":52,"props":444,"children":445},{},[446,451,456,458,463,465,470,472,477],{"type":45,"tag":270,"props":447,"children":448},{},[449],{"type":50,"value":450},"Default recommendation for compiler tuning of GPU kernels:",{"type":45,"tag":58,"props":452,"children":454},{"className":453},[],[455],{"type":50,"value":278},{"type":50,"value":457}," with ",{"type":45,"tag":58,"props":459,"children":461},{"className":460},[],[462],{"type":50,"value":289},{"type":50,"value":464}," between ",{"type":45,"tag":270,"props":466,"children":467},{},[468],{"type":50,"value":469},"30s",{"type":50,"value":471}," (small kernels) and\n",{"type":45,"tag":270,"props":473,"children":474},{},[475],{"type":50,"value":476},"180s",{"type":50,"value":478}," (large attention \u002F XLA HLO).",{"type":45,"tag":75,"props":480,"children":482},{"id":481},"searchconfiguration-sizing",[483],{"type":50,"value":484},"SearchConfiguration sizing",{"type":45,"tag":52,"props":486,"children":487},{},[488,490,496],{"type":50,"value":489},"Reference: ",{"type":45,"tag":58,"props":491,"children":493},{"className":492},[],[494],{"type":50,"value":495},"compileiq\u002Ftypes.py:473-615",{"type":50,"value":497},". Defaults auto-derive; only set what\nyou must.",{"type":45,"tag":150,"props":499,"children":501},{"className":152,"code":500,"language":154,"meta":155,"style":155},"from compileiq.types import SearchConfiguration, ProblemType\n\nconfig = SearchConfiguration(\n    problem_type=ProblemType.MIN,   # MIN for latency; MAX for throughput\n    generations=10,                  # required, > 0\n    pool_size=15,                    # > 5; auto-derives if omitted\n    # cull_size auto-derives to 75% of pool, rounded down to even\n    # mutate_rate defaults to 0.25\n    # num_objectives defaults to 1\n    # normalize defaults to False (set True for cross-GPU runs)\n)\n",[502],{"type":45,"tag":58,"props":503,"children":504},{"__ignoreMap":155},[505,513,522,530,538,546,554,562,570,579,588],{"type":45,"tag":161,"props":506,"children":507},{"class":163,"line":164},[508],{"type":45,"tag":161,"props":509,"children":510},{},[511],{"type":50,"value":512},"from compileiq.types import SearchConfiguration, ProblemType\n",{"type":45,"tag":161,"props":514,"children":515},{"class":163,"line":173},[516],{"type":45,"tag":161,"props":517,"children":519},{"emptyLinePlaceholder":518},true,[520],{"type":50,"value":521},"\n",{"type":45,"tag":161,"props":523,"children":524},{"class":163,"line":182},[525],{"type":45,"tag":161,"props":526,"children":527},{},[528],{"type":50,"value":529},"config = SearchConfiguration(\n",{"type":45,"tag":161,"props":531,"children":532},{"class":163,"line":191},[533],{"type":45,"tag":161,"props":534,"children":535},{},[536],{"type":50,"value":537},"    problem_type=ProblemType.MIN,   # MIN for latency; MAX for throughput\n",{"type":45,"tag":161,"props":539,"children":540},{"class":163,"line":200},[541],{"type":45,"tag":161,"props":542,"children":543},{},[544],{"type":50,"value":545},"    generations=10,                  # required, > 0\n",{"type":45,"tag":161,"props":547,"children":548},{"class":163,"line":209},[549],{"type":45,"tag":161,"props":550,"children":551},{},[552],{"type":50,"value":553},"    pool_size=15,                    # > 5; auto-derives if omitted\n",{"type":45,"tag":161,"props":555,"children":556},{"class":163,"line":218},[557],{"type":45,"tag":161,"props":558,"children":559},{},[560],{"type":50,"value":561},"    # cull_size auto-derives to 75% of pool, rounded down to even\n",{"type":45,"tag":161,"props":563,"children":564},{"class":163,"line":24},[565],{"type":45,"tag":161,"props":566,"children":567},{},[568],{"type":50,"value":569},"    # mutate_rate defaults to 0.25\n",{"type":45,"tag":161,"props":571,"children":573},{"class":163,"line":572},9,[574],{"type":45,"tag":161,"props":575,"children":576},{},[577],{"type":50,"value":578},"    # num_objectives defaults to 1\n",{"type":45,"tag":161,"props":580,"children":582},{"class":163,"line":581},10,[583],{"type":45,"tag":161,"props":584,"children":585},{},[586],{"type":50,"value":587},"    # normalize defaults to False (set True for cross-GPU runs)\n",{"type":45,"tag":161,"props":589,"children":591},{"class":163,"line":590},11,[592],{"type":45,"tag":161,"props":593,"children":594},{},[595],{"type":50,"value":224},{"type":45,"tag":226,"props":597,"children":598},{},[599,620],{"type":45,"tag":230,"props":600,"children":601},{},[602],{"type":45,"tag":234,"props":603,"children":604},{},[605,610,615],{"type":45,"tag":238,"props":606,"children":607},{},[608],{"type":50,"value":609},"Knob",{"type":45,"tag":238,"props":611,"children":612},{},[613],{"type":50,"value":614},"Default",{"type":45,"tag":238,"props":616,"children":617},{},[618],{"type":50,"value":619},"When to override",{"type":45,"tag":254,"props":621,"children":622},{},[623,645,667,689,711,741],{"type":45,"tag":234,"props":624,"children":625},{},[626,635,640],{"type":45,"tag":261,"props":627,"children":628},{},[629],{"type":45,"tag":58,"props":630,"children":632},{"className":631},[],[633],{"type":50,"value":634},"generations",{"type":45,"tag":261,"props":636,"children":637},{},[638],{"type":50,"value":639},"required",{"type":45,"tag":261,"props":641,"children":642},{},[643],{"type":50,"value":644},"10 for initial exploration; 20-40 for a deep run.",{"type":45,"tag":234,"props":646,"children":647},{},[648,657,662],{"type":45,"tag":261,"props":649,"children":650},{},[651],{"type":45,"tag":58,"props":652,"children":654},{"className":653},[],[655],{"type":50,"value":656},"pool_size",{"type":45,"tag":261,"props":658,"children":659},{},[660],{"type":50,"value":661},"auto (≥32)",{"type":45,"tag":261,"props":663,"children":664},{},[665],{"type":50,"value":666},"15 for tiny spaces; 32 for ≥1k design points; 64-128 for ≥10k.",{"type":45,"tag":234,"props":668,"children":669},{},[670,679,684],{"type":45,"tag":261,"props":671,"children":672},{},[673],{"type":45,"tag":58,"props":674,"children":676},{"className":675},[],[677],{"type":50,"value":678},"cull_size",{"type":45,"tag":261,"props":680,"children":681},{},[682],{"type":50,"value":683},"75% of pool, even",{"type":45,"tag":261,"props":685,"children":686},{},[687],{"type":50,"value":688},"Almost never override directly.",{"type":45,"tag":234,"props":690,"children":691},{},[692,701,706],{"type":45,"tag":261,"props":693,"children":694},{},[695],{"type":45,"tag":58,"props":696,"children":698},{"className":697},[],[699],{"type":50,"value":700},"mutate_rate",{"type":45,"tag":261,"props":702,"children":703},{},[704],{"type":50,"value":705},"0.25",{"type":45,"tag":261,"props":707,"children":708},{},[709],{"type":50,"value":710},"Raise to 0.3-0.5 only if convergence stalls in early gens.",{"type":45,"tag":234,"props":712,"children":713},{},[714,723,728],{"type":45,"tag":261,"props":715,"children":716},{},[717],{"type":45,"tag":58,"props":718,"children":720},{"className":719},[],[721],{"type":50,"value":722},"num_objectives",{"type":45,"tag":261,"props":724,"children":725},{},[726],{"type":50,"value":727},"1",{"type":45,"tag":261,"props":729,"children":730},{},[731,733,739],{"type":50,"value":732},"Must equal ",{"type":45,"tag":58,"props":734,"children":736},{"className":735},[],[737],{"type":50,"value":738},"len(return_tuple)",{"type":50,"value":740}," from the objective.",{"type":45,"tag":234,"props":742,"children":743},{},[744,753,758],{"type":45,"tag":261,"props":745,"children":746},{},[747],{"type":45,"tag":58,"props":748,"children":750},{"className":749},[],[751],{"type":50,"value":752},"normalize",{"type":45,"tag":261,"props":754,"children":755},{},[756],{"type":50,"value":757},"False",{"type":45,"tag":261,"props":759,"children":760},{},[761],{"type":50,"value":762},"True when running across heterogeneous nodes or GPUs.",{"type":45,"tag":52,"props":764,"children":765},{},[766,771,773,779,781,787,789,795],{"type":45,"tag":270,"props":767,"children":768},{},[769],{"type":50,"value":770},"Sanity rule of thumb:",{"type":50,"value":772}," if ",{"type":45,"tag":58,"props":774,"children":776},{"className":775},[],[777],{"type":50,"value":778},"pool_size * generations \u003C 50",{"type":50,"value":780},", you are exploring,\nnot optimizing. If ",{"type":45,"tag":58,"props":782,"children":784},{"className":783},[],[785],{"type":50,"value":786},"> 2000",{"type":50,"value":788},", you are probably overfitting to measurement noise\n— ",{"type":45,"tag":58,"props":790,"children":792},{"className":791},[],[793],{"type":50,"value":794},"compileiq-validate-result",{"type":50,"value":796}," will earn its keep there.",{"type":45,"tag":75,"props":798,"children":800},{"id":799},"search-constructor-every-relevant-kwarg",[801],{"type":50,"value":802},"Search(...) constructor — every relevant kwarg",{"type":45,"tag":150,"props":804,"children":806},{"className":152,"code":805,"language":154,"meta":155,"style":155},"from pathlib import Path\nfrom compileiq.ciq import Search\nfrom compileiq.search_spaces.compilers import PtxasSearchSpace\nfrom compileiq.tracker import LoguruTrackerConfig\n\ntuner = Search(\n    objective_function=objective,\n    search_space=PtxasSearchSpace(version=\"13.3\", variant=\"att\"),\n    search_config=config,\n    worker_type=IsoMultiProcessWorker,                 # or WorkerTypes.ISOLATED\n    tracker_config=LoguruTrackerConfig(sink=\"optimization.log\"),\n    dump_results=Path(\"results.csv\"),                  # ALWAYS set this\n    cache_folder=None,                                  # default ~\u002F.cache\u002Fcompileiq\n    disable_progress_bar=False,\n    exit_on_failure=True,\n    debug=False,\n)\n",[807],{"type":45,"tag":58,"props":808,"children":809},{"__ignoreMap":155},[810,818,826,834,842,849,857,865,873,881,889,897,906,915,924,933,942],{"type":45,"tag":161,"props":811,"children":812},{"class":163,"line":164},[813],{"type":45,"tag":161,"props":814,"children":815},{},[816],{"type":50,"value":817},"from pathlib import Path\n",{"type":45,"tag":161,"props":819,"children":820},{"class":163,"line":173},[821],{"type":45,"tag":161,"props":822,"children":823},{},[824],{"type":50,"value":825},"from compileiq.ciq import Search\n",{"type":45,"tag":161,"props":827,"children":828},{"class":163,"line":182},[829],{"type":45,"tag":161,"props":830,"children":831},{},[832],{"type":50,"value":833},"from compileiq.search_spaces.compilers import PtxasSearchSpace\n",{"type":45,"tag":161,"props":835,"children":836},{"class":163,"line":191},[837],{"type":45,"tag":161,"props":838,"children":839},{},[840],{"type":50,"value":841},"from compileiq.tracker import LoguruTrackerConfig\n",{"type":45,"tag":161,"props":843,"children":844},{"class":163,"line":200},[845],{"type":45,"tag":161,"props":846,"children":847},{"emptyLinePlaceholder":518},[848],{"type":50,"value":521},{"type":45,"tag":161,"props":850,"children":851},{"class":163,"line":209},[852],{"type":45,"tag":161,"props":853,"children":854},{},[855],{"type":50,"value":856},"tuner = Search(\n",{"type":45,"tag":161,"props":858,"children":859},{"class":163,"line":218},[860],{"type":45,"tag":161,"props":861,"children":862},{},[863],{"type":50,"value":864},"    objective_function=objective,\n",{"type":45,"tag":161,"props":866,"children":867},{"class":163,"line":24},[868],{"type":45,"tag":161,"props":869,"children":870},{},[871],{"type":50,"value":872},"    search_space=PtxasSearchSpace(version=\"13.3\", variant=\"att\"),\n",{"type":45,"tag":161,"props":874,"children":875},{"class":163,"line":572},[876],{"type":45,"tag":161,"props":877,"children":878},{},[879],{"type":50,"value":880},"    search_config=config,\n",{"type":45,"tag":161,"props":882,"children":883},{"class":163,"line":581},[884],{"type":45,"tag":161,"props":885,"children":886},{},[887],{"type":50,"value":888},"    worker_type=IsoMultiProcessWorker,                 # or WorkerTypes.ISOLATED\n",{"type":45,"tag":161,"props":890,"children":891},{"class":163,"line":590},[892],{"type":45,"tag":161,"props":893,"children":894},{},[895],{"type":50,"value":896},"    tracker_config=LoguruTrackerConfig(sink=\"optimization.log\"),\n",{"type":45,"tag":161,"props":898,"children":900},{"class":163,"line":899},12,[901],{"type":45,"tag":161,"props":902,"children":903},{},[904],{"type":50,"value":905},"    dump_results=Path(\"results.csv\"),                  # ALWAYS set this\n",{"type":45,"tag":161,"props":907,"children":909},{"class":163,"line":908},13,[910],{"type":45,"tag":161,"props":911,"children":912},{},[913],{"type":50,"value":914},"    cache_folder=None,                                  # default ~\u002F.cache\u002Fcompileiq\n",{"type":45,"tag":161,"props":916,"children":918},{"class":163,"line":917},14,[919],{"type":45,"tag":161,"props":920,"children":921},{},[922],{"type":50,"value":923},"    disable_progress_bar=False,\n",{"type":45,"tag":161,"props":925,"children":927},{"class":163,"line":926},15,[928],{"type":45,"tag":161,"props":929,"children":930},{},[931],{"type":50,"value":932},"    exit_on_failure=True,\n",{"type":45,"tag":161,"props":934,"children":936},{"class":163,"line":935},16,[937],{"type":45,"tag":161,"props":938,"children":939},{},[940],{"type":50,"value":941},"    debug=False,\n",{"type":45,"tag":161,"props":943,"children":945},{"class":163,"line":944},17,[946],{"type":45,"tag":161,"props":947,"children":948},{},[949],{"type":50,"value":224},{"type":45,"tag":52,"props":951,"children":952},{},[953,955,961],{"type":50,"value":954},"Always set ",{"type":45,"tag":58,"props":956,"children":958},{"className":957},[],[959],{"type":50,"value":960},"dump_results=Path(...)",{"type":50,"value":962},". CSV is flushed every batch, so a crashed\nor killed run leaves recoverable state.",{"type":45,"tag":75,"props":964,"children":966},{"id":965},"start-semantics",[967],{"type":50,"value":968},"start(...) semantics",{"type":45,"tag":150,"props":970,"children":972},{"className":152,"code":971,"language":154,"meta":155,"style":155},"results = tuner.start(num_workers=4, task_timeout=120)\n",[973],{"type":45,"tag":58,"props":974,"children":975},{"__ignoreMap":155},[976],{"type":45,"tag":161,"props":977,"children":978},{"class":163,"line":164},[979],{"type":45,"tag":161,"props":980,"children":981},{},[982],{"type":50,"value":971},{"type":45,"tag":82,"props":984,"children":985},{},[986,1034,1065],{"type":45,"tag":86,"props":987,"children":988},{},[989,994,996,1002,1004,1009,1011,1016,1018,1024,1026,1032],{"type":45,"tag":58,"props":990,"children":992},{"className":991},[],[993],{"type":50,"value":396},{"type":50,"value":995},": ignored by workers where ",{"type":45,"tag":58,"props":997,"children":999},{"className":998},[],[1000],{"type":50,"value":1001},"respects_num_workers=False",{"type":50,"value":1003},"\n(",{"type":45,"tag":58,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":50,"value":385},{"type":50,"value":1010},", ",{"type":45,"tag":58,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":50,"value":437},{"type":50,"value":1017},"); CompileIQ emits the warning\n",{"type":45,"tag":58,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":50,"value":1023},"\"num_workers is not supported by \u003CWorkerName>\"",{"type":50,"value":1025}," (",{"type":45,"tag":58,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":50,"value":1031},"compileiq\u002Fciq.py:449-451",{"type":50,"value":1033},")\nso users recognize it.",{"type":45,"tag":86,"props":1035,"children":1036},{},[1037,1042,1044,1050,1051,1056,1058,1063],{"type":45,"tag":58,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":50,"value":289},{"type":50,"value":1043},": ignored where ",{"type":45,"tag":58,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":50,"value":1049},"supports_timeout=False",{"type":50,"value":1025},{"type":45,"tag":58,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":50,"value":385},{"type":50,"value":1057},").\nCritical for ",{"type":45,"tag":58,"props":1059,"children":1061},{"className":1060},[],[1062],{"type":50,"value":278},{"type":50,"value":1064}," — without it a hung config wedges that\nbranch.",{"type":45,"tag":86,"props":1066,"children":1067},{},[1068,1070,1076,1078,1083],{"type":50,"value":1069},"Returns a ",{"type":45,"tag":58,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":50,"value":1075},"SearchResult",{"type":50,"value":1077},". Don't process inline; hand off to\n",{"type":45,"tag":58,"props":1079,"children":1081},{"className":1080},[],[1082],{"type":50,"value":794},{"type":50,"value":106},{"type":45,"tag":75,"props":1085,"children":1087},{"id":1086},"tracker-choice-one-line-each",[1088],{"type":50,"value":1089},"Tracker choice (one-line each)",{"type":45,"tag":150,"props":1091,"children":1093},{"className":152,"code":1092,"language":154,"meta":155,"style":155},"from compileiq.tracker import DisabledTrackerConfig, LoguruTrackerConfig, MLflowTrackerConfig\n",[1094],{"type":45,"tag":58,"props":1095,"children":1096},{"__ignoreMap":155},[1097],{"type":45,"tag":161,"props":1098,"children":1099},{"class":163,"line":164},[1100],{"type":45,"tag":161,"props":1101,"children":1102},{},[1103],{"type":50,"value":1092},{"type":45,"tag":82,"props":1105,"children":1106},{},[1107,1118,1129],{"type":45,"tag":86,"props":1108,"children":1109},{},[1110,1116],{"type":45,"tag":58,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":50,"value":1115},"DisabledTrackerConfig()",{"type":50,"value":1117}," — default, no overhead. Fine for one-off runs.",{"type":45,"tag":86,"props":1119,"children":1120},{},[1121,1127],{"type":45,"tag":58,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":50,"value":1126},"LoguruTrackerConfig(sink=\"optimization.log\", level=\"INFO\")",{"type":50,"value":1128}," —\nrecommended for serious campaigns. Negligible overhead.",{"type":45,"tag":86,"props":1130,"children":1131},{},[1132,1138],{"type":45,"tag":58,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":50,"value":1137},"MLflowTrackerConfig(experiment_name=\"...\", tracking_uri=\"...\", run_name=\"...\")",{"type":50,"value":1139},"\n— when integrating with ML Ops; creates a nested MLflow run per evaluation.",{"type":45,"tag":75,"props":1141,"children":1143},{"id":1142},"sample-before-you-search",[1144],{"type":50,"value":1145},"Sample before you search",{"type":45,"tag":52,"props":1147,"children":1148},{},[1149,1155,1157,1163],{"type":45,"tag":58,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":50,"value":1154},"Search.sample(n)",{"type":50,"value":1156}," returns ",{"type":45,"tag":58,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":50,"value":1162},"n",{"type":50,"value":1164}," randomly sampled parameter dicts from the\nsearch space without running the search. Use it to:",{"type":45,"tag":1166,"props":1167,"children":1168},"ol",{},[1169,1182,1187],{"type":45,"tag":86,"props":1170,"children":1171},{},[1172,1174,1180],{"type":50,"value":1173},"Confirm the search space resolves at all (cheaper than the bootstrap\nround-trip; uses the in-memory state of ",{"type":45,"tag":58,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":50,"value":1179},"Search",{"type":50,"value":1181},").",{"type":45,"tag":86,"props":1183,"children":1184},{},[1185],{"type":50,"value":1186},"Eyeball that the dicts have the keys your objective expects.",{"type":45,"tag":86,"props":1188,"children":1189},{},[1190],{"type":50,"value":1191},"Feed a single sample into the objective by hand to verify it runs.",{"type":45,"tag":150,"props":1193,"children":1195},{"className":152,"code":1194,"language":154,"meta":155,"style":155},"sample = tuner.sample(1)[0]\nprint(sample)\nprint(objective(sample))   # should return a real float, not raise\n",[1196],{"type":45,"tag":58,"props":1197,"children":1198},{"__ignoreMap":155},[1199,1207,1215],{"type":45,"tag":161,"props":1200,"children":1201},{"class":163,"line":164},[1202],{"type":45,"tag":161,"props":1203,"children":1204},{},[1205],{"type":50,"value":1206},"sample = tuner.sample(1)[0]\n",{"type":45,"tag":161,"props":1208,"children":1209},{"class":163,"line":173},[1210],{"type":45,"tag":161,"props":1211,"children":1212},{},[1213],{"type":50,"value":1214},"print(sample)\n",{"type":45,"tag":161,"props":1216,"children":1217},{"class":163,"line":182},[1218],{"type":45,"tag":161,"props":1219,"children":1220},{},[1221],{"type":50,"value":1222},"print(objective(sample))   # should return a real float, not raise\n",{"type":45,"tag":75,"props":1224,"children":1226},{"id":1225},"gpu-clock-locking-operator-level",[1227],{"type":50,"value":1228},"GPU clock locking (operator-level)",{"type":45,"tag":52,"props":1230,"children":1231},{},[1232,1234,1239,1241,1247,1249,1255],{"type":50,"value":1233},"Stable measurements need locked clocks. Lock ",{"type":45,"tag":270,"props":1235,"children":1236},{},[1237],{"type":50,"value":1238},"before",{"type":50,"value":1240}," ",{"type":45,"tag":58,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":50,"value":1246},"tuner.start()",{"type":50,"value":1248},",\nunlock via ",{"type":45,"tag":58,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":50,"value":1254},"atexit",{"type":50,"value":1256},". Requires sudo.",{"type":45,"tag":150,"props":1258,"children":1262},{"className":1259,"code":1260,"language":1261,"meta":155,"style":155},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo nvidia-smi -pm 1\nMAX_GPU=$(nvidia-smi --query-gpu=clocks.max.graphics --format=csv,noheader,nounits | head -1)\nMAX_MEM=$(nvidia-smi --query-gpu=clocks.max.memory --format=csv,noheader,nounits | head -1)\nsudo nvidia-smi --lock-gpu-clocks=$MAX_GPU,$MAX_GPU --lock-memory-clocks=$MAX_MEM,$MAX_MEM\n","bash",[1263],{"type":45,"tag":58,"props":1264,"children":1265},{"__ignoreMap":155},[1266,1292,1341,1382],{"type":45,"tag":161,"props":1267,"children":1268},{"class":163,"line":164},[1269,1275,1281,1286],{"type":45,"tag":161,"props":1270,"children":1272},{"style":1271},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1273],{"type":50,"value":1274},"sudo",{"type":45,"tag":161,"props":1276,"children":1278},{"style":1277},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1279],{"type":50,"value":1280}," nvidia-smi",{"type":45,"tag":161,"props":1282,"children":1283},{"style":1277},[1284],{"type":50,"value":1285}," -pm",{"type":45,"tag":161,"props":1287,"children":1289},{"style":1288},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1290],{"type":50,"value":1291}," 1\n",{"type":45,"tag":161,"props":1293,"children":1294},{"class":163,"line":173},[1295,1301,1307,1312,1317,1322,1327,1332,1337],{"type":45,"tag":161,"props":1296,"children":1298},{"style":1297},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1299],{"type":50,"value":1300},"MAX_GPU",{"type":45,"tag":161,"props":1302,"children":1304},{"style":1303},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1305],{"type":50,"value":1306},"=$(",{"type":45,"tag":161,"props":1308,"children":1309},{"style":1271},[1310],{"type":50,"value":1311},"nvidia-smi",{"type":45,"tag":161,"props":1313,"children":1314},{"style":1277},[1315],{"type":50,"value":1316}," --query-gpu=clocks.max.graphics",{"type":45,"tag":161,"props":1318,"children":1319},{"style":1277},[1320],{"type":50,"value":1321}," --format=csv,noheader,nounits",{"type":45,"tag":161,"props":1323,"children":1324},{"style":1303},[1325],{"type":50,"value":1326}," |",{"type":45,"tag":161,"props":1328,"children":1329},{"style":1271},[1330],{"type":50,"value":1331}," head",{"type":45,"tag":161,"props":1333,"children":1334},{"style":1277},[1335],{"type":50,"value":1336}," -1",{"type":45,"tag":161,"props":1338,"children":1339},{"style":1303},[1340],{"type":50,"value":224},{"type":45,"tag":161,"props":1342,"children":1343},{"class":163,"line":182},[1344,1349,1353,1357,1362,1366,1370,1374,1378],{"type":45,"tag":161,"props":1345,"children":1346},{"style":1297},[1347],{"type":50,"value":1348},"MAX_MEM",{"type":45,"tag":161,"props":1350,"children":1351},{"style":1303},[1352],{"type":50,"value":1306},{"type":45,"tag":161,"props":1354,"children":1355},{"style":1271},[1356],{"type":50,"value":1311},{"type":45,"tag":161,"props":1358,"children":1359},{"style":1277},[1360],{"type":50,"value":1361}," --query-gpu=clocks.max.memory",{"type":45,"tag":161,"props":1363,"children":1364},{"style":1277},[1365],{"type":50,"value":1321},{"type":45,"tag":161,"props":1367,"children":1368},{"style":1303},[1369],{"type":50,"value":1326},{"type":45,"tag":161,"props":1371,"children":1372},{"style":1271},[1373],{"type":50,"value":1331},{"type":45,"tag":161,"props":1375,"children":1376},{"style":1277},[1377],{"type":50,"value":1336},{"type":45,"tag":161,"props":1379,"children":1380},{"style":1303},[1381],{"type":50,"value":224},{"type":45,"tag":161,"props":1383,"children":1384},{"class":163,"line":191},[1385,1389,1393,1398,1403,1408,1412,1417,1422,1426],{"type":45,"tag":161,"props":1386,"children":1387},{"style":1271},[1388],{"type":50,"value":1274},{"type":45,"tag":161,"props":1390,"children":1391},{"style":1277},[1392],{"type":50,"value":1280},{"type":45,"tag":161,"props":1394,"children":1395},{"style":1277},[1396],{"type":50,"value":1397}," --lock-gpu-clocks=",{"type":45,"tag":161,"props":1399,"children":1400},{"style":1297},[1401],{"type":50,"value":1402},"$MAX_GPU",{"type":45,"tag":161,"props":1404,"children":1405},{"style":1277},[1406],{"type":50,"value":1407},",",{"type":45,"tag":161,"props":1409,"children":1410},{"style":1297},[1411],{"type":50,"value":1402},{"type":45,"tag":161,"props":1413,"children":1414},{"style":1277},[1415],{"type":50,"value":1416}," --lock-memory-clocks=",{"type":45,"tag":161,"props":1418,"children":1419},{"style":1297},[1420],{"type":50,"value":1421},"$MAX_MEM",{"type":45,"tag":161,"props":1423,"children":1424},{"style":1277},[1425],{"type":50,"value":1407},{"type":45,"tag":161,"props":1427,"children":1428},{"style":1297},[1429],{"type":50,"value":1430},"$MAX_MEM\n",{"type":45,"tag":150,"props":1432,"children":1434},{"className":152,"code":1433,"language":154,"meta":155,"style":155},"import atexit, subprocess\ndef unlock():\n    subprocess.run([\"sudo\", \"nvidia-smi\", \"--reset-gpu-clocks\", \"--reset-memory-clocks\"],\n                   check=False)\natexit.register(unlock)\n",[1435],{"type":45,"tag":58,"props":1436,"children":1437},{"__ignoreMap":155},[1438,1446,1454,1462,1470],{"type":45,"tag":161,"props":1439,"children":1440},{"class":163,"line":164},[1441],{"type":45,"tag":161,"props":1442,"children":1443},{},[1444],{"type":50,"value":1445},"import atexit, subprocess\n",{"type":45,"tag":161,"props":1447,"children":1448},{"class":163,"line":173},[1449],{"type":45,"tag":161,"props":1450,"children":1451},{},[1452],{"type":50,"value":1453},"def unlock():\n",{"type":45,"tag":161,"props":1455,"children":1456},{"class":163,"line":182},[1457],{"type":45,"tag":161,"props":1458,"children":1459},{},[1460],{"type":50,"value":1461},"    subprocess.run([\"sudo\", \"nvidia-smi\", \"--reset-gpu-clocks\", \"--reset-memory-clocks\"],\n",{"type":45,"tag":161,"props":1463,"children":1464},{"class":163,"line":191},[1465],{"type":45,"tag":161,"props":1466,"children":1467},{},[1468],{"type":50,"value":1469},"                   check=False)\n",{"type":45,"tag":161,"props":1471,"children":1472},{"class":163,"line":200},[1473],{"type":45,"tag":161,"props":1474,"children":1475},{},[1476],{"type":50,"value":1477},"atexit.register(unlock)\n",{"type":45,"tag":52,"props":1479,"children":1480},{},[1481],{"type":50,"value":1482},"Inside a CI container or a shared cluster where sudo isn't available, skip\nthis; report higher CV% to the validation skill so it knows to compensate.",{"type":45,"tag":75,"props":1484,"children":1486},{"id":1485},"self-test",[1487],{"type":50,"value":1488},"Self-test",{"type":45,"tag":150,"props":1490,"children":1492},{"className":1259,"code":1491,"language":1261,"meta":155,"style":155},"python scripts\u002Fsmoke_search.py\n",[1493],{"type":45,"tag":58,"props":1494,"children":1495},{"__ignoreMap":155},[1496],{"type":45,"tag":161,"props":1497,"children":1498},{"class":163,"line":164},[1499,1503],{"type":45,"tag":161,"props":1500,"children":1501},{"style":1271},[1502],{"type":50,"value":154},{"type":45,"tag":161,"props":1504,"children":1505},{"style":1277},[1506],{"type":50,"value":1507}," scripts\u002Fsmoke_search.py\n",{"type":45,"tag":52,"props":1509,"children":1510},{},[1511,1513,1519,1520,1525,1527,1533,1535,1541,1542,1548],{"type":50,"value":1512},"Runs a 2-generation search on ",{"type":45,"tag":58,"props":1514,"children":1516},{"className":1515},[],[1517],{"type":50,"value":1518},"x**2 + y",{"type":50,"value":457},{"type":45,"tag":58,"props":1521,"children":1523},{"className":1522},[],[1524],{"type":50,"value":354},{"type":50,"value":1526}," and\nverifies ",{"type":45,"tag":58,"props":1528,"children":1530},{"className":1529},[],[1531],{"type":50,"value":1532},"results.get_best_result()",{"type":50,"value":1534}," returns a dict with ",{"type":45,"tag":58,"props":1536,"children":1538},{"className":1537},[],[1539],{"type":50,"value":1540},"score_1",{"type":50,"value":398},{"type":45,"tag":58,"props":1543,"children":1545},{"className":1544},[],[1546],{"type":50,"value":1547},"params",{"type":50,"value":106},{"type":45,"tag":75,"props":1550,"children":1552},{"id":1551},"gotchas",[1553],{"type":50,"value":1554},"Gotchas",{"type":45,"tag":82,"props":1556,"children":1557},{},[1558,1594,1623,1652],{"type":45,"tag":86,"props":1559,"children":1560},{},[1561,1571,1572,1577,1579,1585,1587,1592],{"type":45,"tag":270,"props":1562,"children":1563},{},[1564,1566],{"type":50,"value":1565},"Forgetting ",{"type":45,"tag":58,"props":1567,"children":1569},{"className":1568},[],[1570],{"type":50,"value":289},{"type":50,"value":457},{"type":45,"tag":58,"props":1573,"children":1575},{"className":1574},[],[1576],{"type":50,"value":278},{"type":50,"value":1578}," is the most\ncommon reason a search hangs for hours. The worker will ",{"type":45,"tag":1580,"props":1581,"children":1582},"em",{},[1583],{"type":50,"value":1584},"kill",{"type":50,"value":1586}," a stuck\nprocess but only after ",{"type":45,"tag":58,"props":1588,"children":1590},{"className":1589},[],[1591],{"type":50,"value":289},{"type":50,"value":1593}," elapses.",{"type":45,"tag":86,"props":1595,"children":1596},{},[1597,1607,1609,1615,1617,1622],{"type":45,"tag":270,"props":1598,"children":1599},{},[1600,1605],{"type":45,"tag":58,"props":1601,"children":1603},{"className":1602},[],[1604],{"type":50,"value":367},{"type":50,"value":1606}," issues",{"type":50,"value":1608}," on some hosts manifest as ",{"type":45,"tag":58,"props":1610,"children":1612},{"className":1611},[],[1613],{"type":50,"value":1614},"EOFError",{"type":50,"value":1616}," or \"Broken pipe\"\non the first eval. Set ",{"type":45,"tag":58,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":50,"value":332},{"type":50,"value":106},{"type":45,"tag":86,"props":1624,"children":1625},{},[1626,1635,1637,1643,1645,1651],{"type":45,"tag":270,"props":1627,"children":1628},{},[1629],{"type":45,"tag":58,"props":1630,"children":1632},{"className":1631},[],[1633],{"type":50,"value":1634},"num_workers > num_gpus",{"type":50,"value":1636}," is fine for fast CPU-side objectives but\noversubscribes GPUs for kernel objectives. For GPU kernels: pin\n",{"type":45,"tag":58,"props":1638,"children":1640},{"className":1639},[],[1641],{"type":50,"value":1642},"CUDA_VISIBLE_DEVICES",{"type":50,"value":1644}," inside the objective and set\n",{"type":45,"tag":58,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":50,"value":1650},"num_workers = num_gpus",{"type":50,"value":106},{"type":45,"tag":86,"props":1653,"children":1654},{},[1655,1660],{"type":45,"tag":270,"props":1656,"children":1657},{},[1658],{"type":50,"value":1659},"Don't put GPU-clock lock calls inside the objective.",{"type":50,"value":1661}," They require sudo\nand are per-host operator setup, not per-eval.",{"type":45,"tag":75,"props":1663,"children":1665},{"id":1664},"next",[1666],{"type":50,"value":1667},"Next",{"type":45,"tag":82,"props":1669,"children":1670},{},[1671,1689],{"type":45,"tag":86,"props":1672,"children":1673},{},[1674,1676,1681,1683,1688],{"type":50,"value":1675},"After ",{"type":45,"tag":58,"props":1677,"children":1679},{"className":1678},[],[1680],{"type":50,"value":104},{"type":50,"value":1682}," returns: ",{"type":45,"tag":58,"props":1684,"children":1686},{"className":1685},[],[1687],{"type":50,"value":794},{"type":50,"value":106},{"type":45,"tag":86,"props":1690,"children":1691},{},[1692,1694,1700],{"type":50,"value":1693},"If something's wrong: ",{"type":45,"tag":58,"props":1695,"children":1697},{"className":1696},[],[1698],{"type":50,"value":1699},"compileiq-debug",{"type":50,"value":106},{"type":45,"tag":1702,"props":1703,"children":1704},"style",{},[1705],{"type":50,"value":1706},"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":1708,"total":218},[1709,1720,1733,1745,1759,1765,1776],{"slug":63,"name":63,"fn":1710,"description":1711,"org":1712,"tags":1713,"stars":20,"repoUrl":21,"updatedAt":1719},"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},[1714,1717,1718],{"name":1715,"slug":1716,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:32:10.176779",{"slug":1721,"name":1721,"fn":1722,"description":1723,"org":1724,"tags":1725,"stars":20,"repoUrl":21,"updatedAt":1732},"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},[1726,1727,1728,1731],{"name":1715,"slug":1716,"type":15},{"name":9,"slug":8,"type":15},{"name":1729,"slug":1730,"type":15},"Optimization","optimization",{"name":13,"slug":14,"type":15},"2026-07-14T05:32:12.791444",{"slug":1734,"name":1734,"fn":1735,"description":1736,"org":1737,"tags":1738,"stars":20,"repoUrl":21,"updatedAt":1744},"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},[1739,1740,1741],{"name":1715,"slug":1716,"type":15},{"name":9,"slug":8,"type":15},{"name":1742,"slug":1743,"type":15},"Onboarding","onboarding","2026-07-14T05:32:11.472149",{"slug":1699,"name":1699,"fn":1746,"description":1747,"org":1748,"tags":1749,"stars":20,"repoUrl":21,"updatedAt":1758},"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},[1750,1753,1756,1757],{"name":1751,"slug":1752,"type":15},"Debugging","debugging",{"name":1754,"slug":1755,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:32:05.08078",{"slug":4,"name":4,"fn":5,"description":6,"org":1760,"tags":1761,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1762,1763,1764],{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":71,"name":71,"fn":1766,"description":1767,"org":1768,"tags":1769,"stars":20,"repoUrl":21,"updatedAt":1775},"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},[1770,1773,1774],{"name":1771,"slug":1772,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:32:07.605639",{"slug":794,"name":794,"fn":1777,"description":1778,"org":1779,"tags":1780,"stars":20,"repoUrl":21,"updatedAt":1789},"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},[1781,1784,1785,1786],{"name":1782,"slug":1783,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":1787,"slug":1788,"type":15},"QA","qa","2026-07-14T05:32:06.343444",{"items":1791,"total":1942},[1792,1809,1826,1837,1849,1861,1874,1888,1899,1910,1924,1933],{"slug":1793,"name":1793,"fn":1794,"description":1795,"org":1796,"tags":1797,"stars":1806,"repoUrl":1807,"updatedAt":1808},"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},[1798,1801,1804],{"name":1799,"slug":1800,"type":15},"Documentation","documentation",{"name":1802,"slug":1803,"type":15},"MCP","mcp",{"name":1179,"slug":1805,"type":15},"search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1810,"name":1810,"fn":1811,"description":1812,"org":1813,"tags":1814,"stars":1823,"repoUrl":1824,"updatedAt":1825},"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},[1815,1818,1821],{"name":1816,"slug":1817,"type":15},"Containers","containers",{"name":1819,"slug":1820,"type":15},"Deployment","deployment",{"name":1822,"slug":154,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1827,"name":1827,"fn":1828,"description":1829,"org":1830,"tags":1831,"stars":1823,"repoUrl":1824,"updatedAt":1836},"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},[1832,1835],{"name":1833,"slug":1834,"type":15},"CI\u002FCD","ci-cd",{"name":1819,"slug":1820,"type":15},"2026-07-14T05:25:59.97109",{"slug":1838,"name":1838,"fn":1839,"description":1840,"org":1841,"tags":1842,"stars":1823,"repoUrl":1824,"updatedAt":1848},"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},[1843,1844,1845],{"name":1833,"slug":1834,"type":15},{"name":1819,"slug":1820,"type":15},{"name":1846,"slug":1847,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1850,"name":1850,"fn":1851,"description":1852,"org":1853,"tags":1854,"stars":1823,"repoUrl":1824,"updatedAt":1860},"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},[1855,1856,1857],{"name":1751,"slug":1752,"type":15},{"name":1846,"slug":1847,"type":15},{"name":1858,"slug":1859,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1862,"name":1862,"fn":1863,"description":1864,"org":1865,"tags":1866,"stars":1823,"repoUrl":1824,"updatedAt":1873},"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},[1867,1870],{"name":1868,"slug":1869,"type":15},"Best Practices","best-practices",{"name":1871,"slug":1872,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1875,"name":1875,"fn":1876,"description":1877,"org":1878,"tags":1879,"stars":1823,"repoUrl":1824,"updatedAt":1887},"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},[1880,1883,1886],{"name":1881,"slug":1882,"type":15},"Machine Learning","machine-learning",{"name":1884,"slug":1885,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1889,"name":1889,"fn":1890,"description":1891,"org":1892,"tags":1893,"stars":1823,"repoUrl":1824,"updatedAt":1898},"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},[1894,1895],{"name":1787,"slug":1788,"type":15},{"name":1896,"slug":1897,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1900,"name":1900,"fn":1901,"description":1902,"org":1903,"tags":1904,"stars":1823,"repoUrl":1824,"updatedAt":1909},"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},[1905,1906],{"name":1819,"slug":1820,"type":15},{"name":1907,"slug":1908,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1911,"name":1911,"fn":1912,"description":1913,"org":1914,"tags":1915,"stars":1823,"repoUrl":1824,"updatedAt":1923},"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},[1916,1919,1920],{"name":1917,"slug":1918,"type":15},"Code Review","code-review",{"name":1846,"slug":1847,"type":15},{"name":1921,"slug":1922,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1925,"name":1925,"fn":1926,"description":1927,"org":1928,"tags":1929,"stars":1823,"repoUrl":1824,"updatedAt":1932},"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},[1930,1931],{"name":1787,"slug":1788,"type":15},{"name":1896,"slug":1897,"type":15},"2026-07-14T05:25:54.928983",{"slug":1934,"name":1934,"fn":1935,"description":1936,"org":1937,"tags":1938,"stars":1823,"repoUrl":1824,"updatedAt":1941},"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},[1939,1940],{"name":17,"slug":18,"type":15},{"name":1833,"slug":1834,"type":15},"2026-07-30T05:29:03.275638",496]