[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-cupynumeric-install":3,"mdc--v2og3g-key":31,"related-org-nvidia-cupynumeric-install":2051,"related-repo-nvidia-cupynumeric-install":2208},{"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},"cupynumeric-install","install and verify cuPyNumeric","Install and verify cuPyNumeric for Python — requirements, commands, verification. Source builds are out of scope.",{"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,17],{"name":13,"slug":14,"type":15},"Deployment","deployment","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Python","python",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:26:22.718143","CC-BY-4.0 OR Apache-2.0",281,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fcupynumeric-install","---\nname: cupynumeric-install\ndescription: Install and verify cuPyNumeric for Python — requirements, commands, verification. Source builds are out of scope.\nlicense: CC-BY-4.0 OR Apache-2.0\ncompatibility: linux-x86_64, linux-aarch64, darwin-aarch64, wsl-x86_64\nmetadata:\n  author: \"NVIDIA Corporation \u003Clegate@nvidia.com>\"\n  version: \"2.0.0\"\n  tags:\n    - cupynumeric\n    - legate\n    - numpy\n    - installation\n    - conda\n    - gpu\n    - distributed-computing\n  upstream: https:\u002F\u002Fgithub.com\u002Fnv-legate\u002Fcupynumeric\n  docs: https:\u002F\u002Fdocs.nvidia.com\u002Fcupynumeric\u002Flatest\u002Finstallation.html\n---\n\n# cuPyNumeric Install (user)\n\n## Purpose\n\nUse this skill to install cuPyNumeric for *use* from Python and to verify the install actually works (including GPU usage). Apply it whenever a user wants cuPyNumeric running via conda or pip. Do not use it to build from source (to modify or contribute) — that is out of scope.\n\n## Mandatory rules\n\n- **Never run installs.** Do not run `pip install`, `conda install`, or any installer. Print the command; let the user run it.\n- **Always isolate.** No installs into base conda, system Python, or shared global envs.\n- **Detect before recommending.** Read-only `--version` checks are fine.\n\n## Prerequisites\n\nConfirm these system requirements before recommending any install:\n\n- **GPU**: Compute Capability ≥ 7.0 (Volta+). CPU-only also supported.\n- **CUDA**: 12.2+.\n- **OS**: Linux (x86_64 \u002F aarch64), macOS aarch64 (pip wheels only), Windows via WSL.\n- **Python**: 3.11 through 3.14 on Linux; 3.11 through 3.13 on macOS aarch64.\n- **conda**: ≥ 24.1 (conda path only).\n- **Package manager**: conda (upstream-recommended) or pip. If neither is present, bootstrap one first (see Instructions).\n\n## Instructions\n\nFollow these steps in order: confirm the prerequisites, ask the scoping questions, install via the chosen path, then verify.\n\n### Ask before installing\n\n1. **Package manager?** Check `conda --version` and `pip --version`. Prefer conda (upstream-recommended); fall back to pip.\n1. **Env target?** GPU machine, CPU-only laptop, cloud, container, or remote\u002Fserver.\n1. **CUDA version?** Ask only when forcing the GPU variant on a host without a visible GPU. Check with `nvidia-smi` \u002F `nvcc --version`.\n\n### Bootstrap — install a package manager first\n\nIf neither `conda` nor `pip` is available, install one. **Provide the command and the docs link; do not run it** — `curl | bash` requires user trust.\n\n#### Recommended: Miniforge (full conda, conda-forge default)\n\n```bash\ncurl -L -O \"https:\u002F\u002Fgithub.com\u002Fconda-forge\u002Fminiforge\u002Freleases\u002Flatest\u002Fdownload\u002FMiniforge3-$(uname)-$(uname -m).sh\"\nbash \"Miniforge3-$(uname)-$(uname -m).sh\"\n```\n\nDocs: https:\u002F\u002Fgithub.com\u002Fconda-forge\u002Fminiforge\n\n#### Alternative: Python + pip\n\nInstall Python from your OS package manager (apt\u002Fdnf\u002Fbrew) or https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F. If pip is missing on an existing Python: `python -m ensurepip --upgrade`.\n\nAfter installing, **open a new shell** so the binary is on PATH.\n\n### Install — conda path\n\n```bash\nconda create -n cupynumeric -c conda-forge -c legate cupynumeric\nconda activate cupynumeric\n```\n\nInto an existing env: `conda install -c conda-forge -c legate cupynumeric`.\n\nconda auto-selects the GPU vs CPU variant from whether `nvidia-smi` works at install time. To override that, see below.\n\n#### Force the GPU variant\n\nSet `CONDA_OVERRIDE_CUDA` only when no GPU is visible at install time (e.g. building a container for a GPU host). Use the runtime host's CUDA version:\n\n```bash\nCONDA_OVERRIDE_CUDA=\"12.2\" conda install -c conda-forge -c legate cupynumeric\n```\n\n#### Nightly (less validated)\n\n```bash\nconda install -c conda-forge -c legate-nightly cupynumeric\n```\n\n### Install — pip path\n\n```bash\npython -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install nvidia-cupynumeric\n```\n\n### Verify\n\n#### Smoke test (always run)\n\nRun a self-contained script through the `legate` launcher — no repo checkout needed.\n\n```bash\nTMP=$(mktemp -d)\ncat > \"$TMP\u002Fsmoke.py\" \u003C\u003C'EOF'\nimport cupynumeric as np\na = np.arange(10)\nb = np.ones((4, 4))\nprint(\"sum:\", a.sum())            # expect 45\nprint(\"matmul:\", (b @ b).sum())   # expect 64.0\nEOF\nlegate \"$TMP\u002Fsmoke.py\"\nrm -rf \"$TMP\"\n```\n\nExpect `sum: 45` and `matmul: 64.0`. If `legate` is missing, the env is not activated — see Troubleshooting.\n\n#### GPU usage check (mandatory when a supported GPU is present)\n\nA passing smoke test does **not** prove GPU usage — a CPU-variant install on a GPU box produces correct results too. Run both steps.\n\n**1. Force a GPU launch.** `legate --gpus N` requests N GPUs; fails fast if no GPU is visible or the CPU variant is installed.\n\n```bash\nTMP=$(mktemp -d)\ncat > \"$TMP\u002Fcheck.py\" \u003C\u003C'EOF'\nimport cupynumeric as np\nprint(np.ones((4096, 4096)).sum())\nEOF\nlegate --gpus 1 \"$TMP\u002Fcheck.py\"\nrm -rf \"$TMP\"\n```\n\nExpect `16777216.0`. If you see `CUDA driver`, `libcudart`, or `no GPUs available`, the CPU variant is installed; reinstall with `CONDA_OVERRIDE_CUDA`.\n\n**2. Confirm the GPU was touched.** Run a deadline-bounded matmul loop alongside `nvidia-smi`, all from one shell — no second-terminal race:\n\n```bash\nTMPDIR_GPU=$(mktemp -d)\nSCRIPT=\"$TMPDIR_GPU\u002Fcupynumeric_gpu_check.py\"\ncat > \"$SCRIPT\" \u003C\u003C'EOF'\nimport cupynumeric as np, time\na = np.ones((10000, 10000))\ndeadline = time.time() + 20\niters = 0\nwhile time.time() \u003C deadline:\n    b = a @ a\n    _ = float(b.sum())   # force sync so the matmul actually runs\n    iters += 1\nprint(\"iters:\", iters)\nEOF\nlegate --gpus 1 \"$SCRIPT\" &\nWORKLOAD=$!\nsleep 5                                     # buffer for Legate startup\nfor _ in $(seq 10); do                      # 10 samples at 1s — covers slow startup\n  nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader\n  sleep 1\ndone\nwait \"$WORKLOAD\"\nrm -rf \"$TMPDIR_GPU\"\n```\n\nExpect `memory.used` in the GiB range across most samples and non-trivial `utilization.gpu` in several. If both stay at baseline across every sample, the GPU variant is not installed — check `conda list cupynumeric` for `*_gpu` (not `*_cpu`).\n\n#### Deeper recipes\n\nSee [verification_examples.md](references\u002Fverification_examples.md) for multi-GPU checks, CPU fallback, container, and troubleshooting.\n\n## Limitations\n\n- **Don't mix conda and pip in one env.** Mixing overrides the first install and breaks at import. To switch, run `pip uninstall nvidia-cupynumeric` or `conda remove cupynumeric` first.\n- **Use the `legate` launcher for multi-GPU \u002F multi-rank runs.** Plain `python` runs single-process: `legate --gpus 2 script.py`.\n- **Force the GPU variant on a CPU-only host with `CONDA_OVERRIDE_CUDA`.** conda otherwise auto-selects the CPU or GPU variant from `nvidia-smi` at install time.\n- **Require Volta or newer.** Pascal (GTX 10xx \u002F P100) is unsupported.\n- **Verify `conda --version` ≥ 24.1.** Older releases silently break variant selection.\n- **Treat multi-node \u002F MPI \u002F UCX as out of scope.** Defer to https:\u002F\u002Fdocs.nvidia.com\u002Flegate\u002Flatest\u002Fnetworking-wheels.html and https:\u002F\u002Fdocs.nvidia.com\u002Flegate\u002Flatest\u002Fmpi-wrapper.html.\n\n## Troubleshooting\n\n- **`ModuleNotFoundError: No module named 'cupynumeric'`** → Run `which python` and `pip list | grep cupynumeric` (or `conda list | grep cupynumeric`) from the same shell to find the env mismatch.\n- **`ImportError` mentioning CUDA \u002F `libcudart`** → Reinstall with `CONDA_OVERRIDE_CUDA=\"\u003Cyour-cuda-version>\"`; the CPU variant is on a GPU box, or CUDA versions are mismatched.\n- **`legate: command not found`** → Activate the env, then run `which legate` to confirm.\n- **Slower than NumPy on a laptop** → Expect this for small problems (Legate per-task overhead). See the cuPyNumeric FAQ.\n\n## See also\n\n- [references\u002Fverification_examples.md](references\u002Fverification_examples.md) — verification + troubleshooting recipes.\n- Upstream docs: https:\u002F\u002Fdocs.nvidia.com\u002Fcupynumeric\u002Flatest\u002Finstallation.html\n- Legate requirements: https:\u002F\u002Fdocs.nvidia.com\u002Flegate\u002Flatest\u002Finstallation.html\n",{"data":32,"body":47},{"name":4,"description":6,"license":23,"compatibility":33,"metadata":34},"linux-x86_64, linux-aarch64, darwin-aarch64, wsl-x86_64",{"author":35,"version":36,"tags":37,"upstream":45,"docs":46},"NVIDIA Corporation \u003Clegate@nvidia.com>","2.0.0",[38,39,40,41,42,43,44],"cupynumeric","legate","numpy","installation","conda","gpu","distributed-computing","https:\u002F\u002Fgithub.com\u002Fnv-legate\u002Fcupynumeric","https:\u002F\u002Fdocs.nvidia.com\u002Fcupynumeric\u002Flatest\u002Finstallation.html",{"type":48,"children":49},"root",[50,59,66,80,86,147,153,158,219,225,230,237,303,309,344,351,500,513,519,539,551,557,626,638,650,656,669,733,739,778,784,843,849,855,867,1046,1073,1079,1091,1109,1254,1295,1312,1696,1740,1746,1759,1765,1899,1905,2006,2012,2045],{"type":51,"tag":52,"props":53,"children":55},"element","h1",{"id":54},"cupynumeric-install-user",[56],{"type":57,"value":58},"text","cuPyNumeric Install (user)",{"type":51,"tag":60,"props":61,"children":63},"h2",{"id":62},"purpose",[64],{"type":57,"value":65},"Purpose",{"type":51,"tag":67,"props":68,"children":69},"p",{},[70,72,78],{"type":57,"value":71},"Use this skill to install cuPyNumeric for ",{"type":51,"tag":73,"props":74,"children":75},"em",{},[76],{"type":57,"value":77},"use",{"type":57,"value":79}," from Python and to verify the install actually works (including GPU usage). Apply it whenever a user wants cuPyNumeric running via conda or pip. Do not use it to build from source (to modify or contribute) — that is out of scope.",{"type":51,"tag":60,"props":81,"children":83},{"id":82},"mandatory-rules",[84],{"type":57,"value":85},"Mandatory rules",{"type":51,"tag":87,"props":88,"children":89},"ul",{},[90,119,129],{"type":51,"tag":91,"props":92,"children":93},"li",{},[94,100,102,109,111,117],{"type":51,"tag":95,"props":96,"children":97},"strong",{},[98],{"type":57,"value":99},"Never run installs.",{"type":57,"value":101}," Do not run ",{"type":51,"tag":103,"props":104,"children":106},"code",{"className":105},[],[107],{"type":57,"value":108},"pip install",{"type":57,"value":110},", ",{"type":51,"tag":103,"props":112,"children":114},{"className":113},[],[115],{"type":57,"value":116},"conda install",{"type":57,"value":118},", or any installer. Print the command; let the user run it.",{"type":51,"tag":91,"props":120,"children":121},{},[122,127],{"type":51,"tag":95,"props":123,"children":124},{},[125],{"type":57,"value":126},"Always isolate.",{"type":57,"value":128}," No installs into base conda, system Python, or shared global envs.",{"type":51,"tag":91,"props":130,"children":131},{},[132,137,139,145],{"type":51,"tag":95,"props":133,"children":134},{},[135],{"type":57,"value":136},"Detect before recommending.",{"type":57,"value":138}," Read-only ",{"type":51,"tag":103,"props":140,"children":142},{"className":141},[],[143],{"type":57,"value":144},"--version",{"type":57,"value":146}," checks are fine.",{"type":51,"tag":60,"props":148,"children":150},{"id":149},"prerequisites",[151],{"type":57,"value":152},"Prerequisites",{"type":51,"tag":67,"props":154,"children":155},{},[156],{"type":57,"value":157},"Confirm these system requirements before recommending any install:",{"type":51,"tag":87,"props":159,"children":160},{},[161,171,181,191,200,209],{"type":51,"tag":91,"props":162,"children":163},{},[164,169],{"type":51,"tag":95,"props":165,"children":166},{},[167],{"type":57,"value":168},"GPU",{"type":57,"value":170},": Compute Capability ≥ 7.0 (Volta+). CPU-only also supported.",{"type":51,"tag":91,"props":172,"children":173},{},[174,179],{"type":51,"tag":95,"props":175,"children":176},{},[177],{"type":57,"value":178},"CUDA",{"type":57,"value":180},": 12.2+.",{"type":51,"tag":91,"props":182,"children":183},{},[184,189],{"type":51,"tag":95,"props":185,"children":186},{},[187],{"type":57,"value":188},"OS",{"type":57,"value":190},": Linux (x86_64 \u002F aarch64), macOS aarch64 (pip wheels only), Windows via WSL.",{"type":51,"tag":91,"props":192,"children":193},{},[194,198],{"type":51,"tag":95,"props":195,"children":196},{},[197],{"type":57,"value":18},{"type":57,"value":199},": 3.11 through 3.14 on Linux; 3.11 through 3.13 on macOS aarch64.",{"type":51,"tag":91,"props":201,"children":202},{},[203,207],{"type":51,"tag":95,"props":204,"children":205},{},[206],{"type":57,"value":42},{"type":57,"value":208},": ≥ 24.1 (conda path only).",{"type":51,"tag":91,"props":210,"children":211},{},[212,217],{"type":51,"tag":95,"props":213,"children":214},{},[215],{"type":57,"value":216},"Package manager",{"type":57,"value":218},": conda (upstream-recommended) or pip. If neither is present, bootstrap one first (see Instructions).",{"type":51,"tag":60,"props":220,"children":222},{"id":221},"instructions",[223],{"type":57,"value":224},"Instructions",{"type":51,"tag":67,"props":226,"children":227},{},[228],{"type":57,"value":229},"Follow these steps in order: confirm the prerequisites, ask the scoping questions, install via the chosen path, then verify.",{"type":51,"tag":231,"props":232,"children":234},"h3",{"id":233},"ask-before-installing",[235],{"type":57,"value":236},"Ask before installing",{"type":51,"tag":238,"props":239,"children":240},"ol",{},[241,267,277],{"type":51,"tag":91,"props":242,"children":243},{},[244,249,251,257,259,265],{"type":51,"tag":95,"props":245,"children":246},{},[247],{"type":57,"value":248},"Package manager?",{"type":57,"value":250}," Check ",{"type":51,"tag":103,"props":252,"children":254},{"className":253},[],[255],{"type":57,"value":256},"conda --version",{"type":57,"value":258}," and ",{"type":51,"tag":103,"props":260,"children":262},{"className":261},[],[263],{"type":57,"value":264},"pip --version",{"type":57,"value":266},". Prefer conda (upstream-recommended); fall back to pip.",{"type":51,"tag":91,"props":268,"children":269},{},[270,275],{"type":51,"tag":95,"props":271,"children":272},{},[273],{"type":57,"value":274},"Env target?",{"type":57,"value":276}," GPU machine, CPU-only laptop, cloud, container, or remote\u002Fserver.",{"type":51,"tag":91,"props":278,"children":279},{},[280,285,287,293,295,301],{"type":51,"tag":95,"props":281,"children":282},{},[283],{"type":57,"value":284},"CUDA version?",{"type":57,"value":286}," Ask only when forcing the GPU variant on a host without a visible GPU. Check with ",{"type":51,"tag":103,"props":288,"children":290},{"className":289},[],[291],{"type":57,"value":292},"nvidia-smi",{"type":57,"value":294}," \u002F ",{"type":51,"tag":103,"props":296,"children":298},{"className":297},[],[299],{"type":57,"value":300},"nvcc --version",{"type":57,"value":302},".",{"type":51,"tag":231,"props":304,"children":306},{"id":305},"bootstrap-install-a-package-manager-first",[307],{"type":57,"value":308},"Bootstrap — install a package manager first",{"type":51,"tag":67,"props":310,"children":311},{},[312,314,319,321,327,329,334,336,342],{"type":57,"value":313},"If neither ",{"type":51,"tag":103,"props":315,"children":317},{"className":316},[],[318],{"type":57,"value":42},{"type":57,"value":320}," nor ",{"type":51,"tag":103,"props":322,"children":324},{"className":323},[],[325],{"type":57,"value":326},"pip",{"type":57,"value":328}," is available, install one. ",{"type":51,"tag":95,"props":330,"children":331},{},[332],{"type":57,"value":333},"Provide the command and the docs link; do not run it",{"type":57,"value":335}," — ",{"type":51,"tag":103,"props":337,"children":339},{"className":338},[],[340],{"type":57,"value":341},"curl | bash",{"type":57,"value":343}," requires user trust.",{"type":51,"tag":345,"props":346,"children":348},"h4",{"id":347},"recommended-miniforge-full-conda-conda-forge-default",[349],{"type":57,"value":350},"Recommended: Miniforge (full conda, conda-forge default)",{"type":51,"tag":352,"props":353,"children":358},"pre",{"className":354,"code":355,"language":356,"meta":357,"style":357},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -L -O \"https:\u002F\u002Fgithub.com\u002Fconda-forge\u002Fminiforge\u002Freleases\u002Flatest\u002Fdownload\u002FMiniforge3-$(uname)-$(uname -m).sh\"\nbash \"Miniforge3-$(uname)-$(uname -m).sh\"\n","bash","",[359],{"type":51,"tag":103,"props":360,"children":361},{"__ignoreMap":357},[362,443],{"type":51,"tag":363,"props":364,"children":367},"span",{"class":365,"line":366},"line",1,[368,374,380,385,391,396,401,406,411,416,420,424,429,433,438],{"type":51,"tag":363,"props":369,"children":371},{"style":370},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[372],{"type":57,"value":373},"curl",{"type":51,"tag":363,"props":375,"children":377},{"style":376},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[378],{"type":57,"value":379}," -L",{"type":51,"tag":363,"props":381,"children":382},{"style":376},[383],{"type":57,"value":384}," -O",{"type":51,"tag":363,"props":386,"children":388},{"style":387},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[389],{"type":57,"value":390}," \"",{"type":51,"tag":363,"props":392,"children":393},{"style":376},[394],{"type":57,"value":395},"https:\u002F\u002Fgithub.com\u002Fconda-forge\u002Fminiforge\u002Freleases\u002Flatest\u002Fdownload\u002FMiniforge3-",{"type":51,"tag":363,"props":397,"children":398},{"style":387},[399],{"type":57,"value":400},"$(",{"type":51,"tag":363,"props":402,"children":403},{"style":370},[404],{"type":57,"value":405},"uname",{"type":51,"tag":363,"props":407,"children":408},{"style":387},[409],{"type":57,"value":410},")",{"type":51,"tag":363,"props":412,"children":413},{"style":376},[414],{"type":57,"value":415},"-",{"type":51,"tag":363,"props":417,"children":418},{"style":387},[419],{"type":57,"value":400},{"type":51,"tag":363,"props":421,"children":422},{"style":370},[423],{"type":57,"value":405},{"type":51,"tag":363,"props":425,"children":426},{"style":376},[427],{"type":57,"value":428}," -m",{"type":51,"tag":363,"props":430,"children":431},{"style":387},[432],{"type":57,"value":410},{"type":51,"tag":363,"props":434,"children":435},{"style":376},[436],{"type":57,"value":437},".sh",{"type":51,"tag":363,"props":439,"children":440},{"style":387},[441],{"type":57,"value":442},"\"\n",{"type":51,"tag":363,"props":444,"children":446},{"class":365,"line":445},2,[447,451,455,460,464,468,472,476,480,484,488,492,496],{"type":51,"tag":363,"props":448,"children":449},{"style":370},[450],{"type":57,"value":356},{"type":51,"tag":363,"props":452,"children":453},{"style":387},[454],{"type":57,"value":390},{"type":51,"tag":363,"props":456,"children":457},{"style":376},[458],{"type":57,"value":459},"Miniforge3-",{"type":51,"tag":363,"props":461,"children":462},{"style":387},[463],{"type":57,"value":400},{"type":51,"tag":363,"props":465,"children":466},{"style":370},[467],{"type":57,"value":405},{"type":51,"tag":363,"props":469,"children":470},{"style":387},[471],{"type":57,"value":410},{"type":51,"tag":363,"props":473,"children":474},{"style":376},[475],{"type":57,"value":415},{"type":51,"tag":363,"props":477,"children":478},{"style":387},[479],{"type":57,"value":400},{"type":51,"tag":363,"props":481,"children":482},{"style":370},[483],{"type":57,"value":405},{"type":51,"tag":363,"props":485,"children":486},{"style":376},[487],{"type":57,"value":428},{"type":51,"tag":363,"props":489,"children":490},{"style":387},[491],{"type":57,"value":410},{"type":51,"tag":363,"props":493,"children":494},{"style":376},[495],{"type":57,"value":437},{"type":51,"tag":363,"props":497,"children":498},{"style":387},[499],{"type":57,"value":442},{"type":51,"tag":67,"props":501,"children":502},{},[503,505],{"type":57,"value":504},"Docs: ",{"type":51,"tag":506,"props":507,"children":511},"a",{"href":508,"rel":509},"https:\u002F\u002Fgithub.com\u002Fconda-forge\u002Fminiforge",[510],"nofollow",[512],{"type":57,"value":508},{"type":51,"tag":345,"props":514,"children":516},{"id":515},"alternative-python-pip",[517],{"type":57,"value":518},"Alternative: Python + pip",{"type":51,"tag":67,"props":520,"children":521},{},[522,524,530,532,538],{"type":57,"value":523},"Install Python from your OS package manager (apt\u002Fdnf\u002Fbrew) or ",{"type":51,"tag":506,"props":525,"children":528},{"href":526,"rel":527},"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F",[510],[529],{"type":57,"value":526},{"type":57,"value":531},". If pip is missing on an existing Python: ",{"type":51,"tag":103,"props":533,"children":535},{"className":534},[],[536],{"type":57,"value":537},"python -m ensurepip --upgrade",{"type":57,"value":302},{"type":51,"tag":67,"props":540,"children":541},{},[542,544,549],{"type":57,"value":543},"After installing, ",{"type":51,"tag":95,"props":545,"children":546},{},[547],{"type":57,"value":548},"open a new shell",{"type":57,"value":550}," so the binary is on PATH.",{"type":51,"tag":231,"props":552,"children":554},{"id":553},"install-conda-path",[555],{"type":57,"value":556},"Install — conda path",{"type":51,"tag":352,"props":558,"children":560},{"className":354,"code":559,"language":356,"meta":357,"style":357},"conda create -n cupynumeric -c conda-forge -c legate cupynumeric\nconda activate cupynumeric\n",[561],{"type":51,"tag":103,"props":562,"children":563},{"__ignoreMap":357},[564,610],{"type":51,"tag":363,"props":565,"children":566},{"class":365,"line":366},[567,571,576,581,586,591,596,600,605],{"type":51,"tag":363,"props":568,"children":569},{"style":370},[570],{"type":57,"value":42},{"type":51,"tag":363,"props":572,"children":573},{"style":376},[574],{"type":57,"value":575}," create",{"type":51,"tag":363,"props":577,"children":578},{"style":376},[579],{"type":57,"value":580}," -n",{"type":51,"tag":363,"props":582,"children":583},{"style":376},[584],{"type":57,"value":585}," cupynumeric",{"type":51,"tag":363,"props":587,"children":588},{"style":376},[589],{"type":57,"value":590}," -c",{"type":51,"tag":363,"props":592,"children":593},{"style":376},[594],{"type":57,"value":595}," conda-forge",{"type":51,"tag":363,"props":597,"children":598},{"style":376},[599],{"type":57,"value":590},{"type":51,"tag":363,"props":601,"children":602},{"style":376},[603],{"type":57,"value":604}," legate",{"type":51,"tag":363,"props":606,"children":607},{"style":376},[608],{"type":57,"value":609}," cupynumeric\n",{"type":51,"tag":363,"props":611,"children":612},{"class":365,"line":445},[613,617,622],{"type":51,"tag":363,"props":614,"children":615},{"style":370},[616],{"type":57,"value":42},{"type":51,"tag":363,"props":618,"children":619},{"style":376},[620],{"type":57,"value":621}," activate",{"type":51,"tag":363,"props":623,"children":624},{"style":376},[625],{"type":57,"value":609},{"type":51,"tag":67,"props":627,"children":628},{},[629,631,637],{"type":57,"value":630},"Into an existing env: ",{"type":51,"tag":103,"props":632,"children":634},{"className":633},[],[635],{"type":57,"value":636},"conda install -c conda-forge -c legate cupynumeric",{"type":57,"value":302},{"type":51,"tag":67,"props":639,"children":640},{},[641,643,648],{"type":57,"value":642},"conda auto-selects the GPU vs CPU variant from whether ",{"type":51,"tag":103,"props":644,"children":646},{"className":645},[],[647],{"type":57,"value":292},{"type":57,"value":649}," works at install time. To override that, see below.",{"type":51,"tag":345,"props":651,"children":653},{"id":652},"force-the-gpu-variant",[654],{"type":57,"value":655},"Force the GPU variant",{"type":51,"tag":67,"props":657,"children":658},{},[659,661,667],{"type":57,"value":660},"Set ",{"type":51,"tag":103,"props":662,"children":664},{"className":663},[],[665],{"type":57,"value":666},"CONDA_OVERRIDE_CUDA",{"type":57,"value":668}," only when no GPU is visible at install time (e.g. building a container for a GPU host). Use the runtime host's CUDA version:",{"type":51,"tag":352,"props":670,"children":672},{"className":354,"code":671,"language":356,"meta":357,"style":357},"CONDA_OVERRIDE_CUDA=\"12.2\" conda install -c conda-forge -c legate cupynumeric\n",[673],{"type":51,"tag":103,"props":674,"children":675},{"__ignoreMap":357},[676],{"type":51,"tag":363,"props":677,"children":678},{"class":365,"line":366},[679,684,689,694,699,703,708,713,717,721,725,729],{"type":51,"tag":363,"props":680,"children":682},{"style":681},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[683],{"type":57,"value":666},{"type":51,"tag":363,"props":685,"children":686},{"style":387},[687],{"type":57,"value":688},"=",{"type":51,"tag":363,"props":690,"children":691},{"style":387},[692],{"type":57,"value":693},"\"",{"type":51,"tag":363,"props":695,"children":696},{"style":376},[697],{"type":57,"value":698},"12.2",{"type":51,"tag":363,"props":700,"children":701},{"style":387},[702],{"type":57,"value":693},{"type":51,"tag":363,"props":704,"children":705},{"style":370},[706],{"type":57,"value":707}," conda",{"type":51,"tag":363,"props":709,"children":710},{"style":376},[711],{"type":57,"value":712}," install",{"type":51,"tag":363,"props":714,"children":715},{"style":376},[716],{"type":57,"value":590},{"type":51,"tag":363,"props":718,"children":719},{"style":376},[720],{"type":57,"value":595},{"type":51,"tag":363,"props":722,"children":723},{"style":376},[724],{"type":57,"value":590},{"type":51,"tag":363,"props":726,"children":727},{"style":376},[728],{"type":57,"value":604},{"type":51,"tag":363,"props":730,"children":731},{"style":376},[732],{"type":57,"value":609},{"type":51,"tag":345,"props":734,"children":736},{"id":735},"nightly-less-validated",[737],{"type":57,"value":738},"Nightly (less validated)",{"type":51,"tag":352,"props":740,"children":742},{"className":354,"code":741,"language":356,"meta":357,"style":357},"conda install -c conda-forge -c legate-nightly cupynumeric\n",[743],{"type":51,"tag":103,"props":744,"children":745},{"__ignoreMap":357},[746],{"type":51,"tag":363,"props":747,"children":748},{"class":365,"line":366},[749,753,757,761,765,769,774],{"type":51,"tag":363,"props":750,"children":751},{"style":370},[752],{"type":57,"value":42},{"type":51,"tag":363,"props":754,"children":755},{"style":376},[756],{"type":57,"value":712},{"type":51,"tag":363,"props":758,"children":759},{"style":376},[760],{"type":57,"value":590},{"type":51,"tag":363,"props":762,"children":763},{"style":376},[764],{"type":57,"value":595},{"type":51,"tag":363,"props":766,"children":767},{"style":376},[768],{"type":57,"value":590},{"type":51,"tag":363,"props":770,"children":771},{"style":376},[772],{"type":57,"value":773}," legate-nightly",{"type":51,"tag":363,"props":775,"children":776},{"style":376},[777],{"type":57,"value":609},{"type":51,"tag":231,"props":779,"children":781},{"id":780},"install-pip-path",[782],{"type":57,"value":783},"Install — pip path",{"type":51,"tag":352,"props":785,"children":787},{"className":354,"code":786,"language":356,"meta":357,"style":357},"python -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install nvidia-cupynumeric\n",[788],{"type":51,"tag":103,"props":789,"children":790},{"__ignoreMap":357},[791,812,826],{"type":51,"tag":363,"props":792,"children":793},{"class":365,"line":366},[794,798,802,807],{"type":51,"tag":363,"props":795,"children":796},{"style":370},[797],{"type":57,"value":19},{"type":51,"tag":363,"props":799,"children":800},{"style":376},[801],{"type":57,"value":428},{"type":51,"tag":363,"props":803,"children":804},{"style":376},[805],{"type":57,"value":806}," venv",{"type":51,"tag":363,"props":808,"children":809},{"style":376},[810],{"type":57,"value":811}," .venv\n",{"type":51,"tag":363,"props":813,"children":814},{"class":365,"line":445},[815,821],{"type":51,"tag":363,"props":816,"children":818},{"style":817},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[819],{"type":57,"value":820},"source",{"type":51,"tag":363,"props":822,"children":823},{"style":376},[824],{"type":57,"value":825}," .venv\u002Fbin\u002Factivate\n",{"type":51,"tag":363,"props":827,"children":829},{"class":365,"line":828},3,[830,834,838],{"type":51,"tag":363,"props":831,"children":832},{"style":370},[833],{"type":57,"value":326},{"type":51,"tag":363,"props":835,"children":836},{"style":376},[837],{"type":57,"value":712},{"type":51,"tag":363,"props":839,"children":840},{"style":376},[841],{"type":57,"value":842}," nvidia-cupynumeric\n",{"type":51,"tag":231,"props":844,"children":846},{"id":845},"verify",[847],{"type":57,"value":848},"Verify",{"type":51,"tag":345,"props":850,"children":852},{"id":851},"smoke-test-always-run",[853],{"type":57,"value":854},"Smoke test (always run)",{"type":51,"tag":67,"props":856,"children":857},{},[858,860,865],{"type":57,"value":859},"Run a self-contained script through the ",{"type":51,"tag":103,"props":861,"children":863},{"className":862},[],[864],{"type":57,"value":39},{"type":57,"value":866}," launcher — no repo checkout needed.",{"type":51,"tag":352,"props":868,"children":870},{"className":354,"code":869,"language":356,"meta":357,"style":357},"TMP=$(mktemp -d)\ncat > \"$TMP\u002Fsmoke.py\" \u003C\u003C'EOF'\nimport cupynumeric as np\na = np.arange(10)\nb = np.ones((4, 4))\nprint(\"sum:\", a.sum())            # expect 45\nprint(\"matmul:\", (b @ b).sum())   # expect 64.0\nEOF\nlegate \"$TMP\u002Fsmoke.py\"\nrm -rf \"$TMP\"\n",[871],{"type":51,"tag":103,"props":872,"children":873},{"__ignoreMap":357},[874,902,943,951,960,969,978,987,996,1020],{"type":51,"tag":363,"props":875,"children":876},{"class":365,"line":366},[877,882,887,892,897],{"type":51,"tag":363,"props":878,"children":879},{"style":681},[880],{"type":57,"value":881},"TMP",{"type":51,"tag":363,"props":883,"children":884},{"style":387},[885],{"type":57,"value":886},"=$(",{"type":51,"tag":363,"props":888,"children":889},{"style":370},[890],{"type":57,"value":891},"mktemp",{"type":51,"tag":363,"props":893,"children":894},{"style":376},[895],{"type":57,"value":896}," -d",{"type":51,"tag":363,"props":898,"children":899},{"style":387},[900],{"type":57,"value":901},")\n",{"type":51,"tag":363,"props":903,"children":904},{"class":365,"line":445},[905,910,915,919,924,929,933,938],{"type":51,"tag":363,"props":906,"children":907},{"style":370},[908],{"type":57,"value":909},"cat",{"type":51,"tag":363,"props":911,"children":912},{"style":387},[913],{"type":57,"value":914}," >",{"type":51,"tag":363,"props":916,"children":917},{"style":387},[918],{"type":57,"value":390},{"type":51,"tag":363,"props":920,"children":921},{"style":681},[922],{"type":57,"value":923},"$TMP",{"type":51,"tag":363,"props":925,"children":926},{"style":376},[927],{"type":57,"value":928},"\u002Fsmoke.py",{"type":51,"tag":363,"props":930,"children":931},{"style":387},[932],{"type":57,"value":693},{"type":51,"tag":363,"props":934,"children":935},{"style":387},[936],{"type":57,"value":937}," \u003C\u003C",{"type":51,"tag":363,"props":939,"children":940},{"style":387},[941],{"type":57,"value":942},"'EOF'\n",{"type":51,"tag":363,"props":944,"children":945},{"class":365,"line":828},[946],{"type":51,"tag":363,"props":947,"children":948},{"style":376},[949],{"type":57,"value":950},"import cupynumeric as np\n",{"type":51,"tag":363,"props":952,"children":954},{"class":365,"line":953},4,[955],{"type":51,"tag":363,"props":956,"children":957},{"style":376},[958],{"type":57,"value":959},"a = np.arange(10)\n",{"type":51,"tag":363,"props":961,"children":963},{"class":365,"line":962},5,[964],{"type":51,"tag":363,"props":965,"children":966},{"style":376},[967],{"type":57,"value":968},"b = np.ones((4, 4))\n",{"type":51,"tag":363,"props":970,"children":972},{"class":365,"line":971},6,[973],{"type":51,"tag":363,"props":974,"children":975},{"style":376},[976],{"type":57,"value":977},"print(\"sum:\", a.sum())            # expect 45\n",{"type":51,"tag":363,"props":979,"children":981},{"class":365,"line":980},7,[982],{"type":51,"tag":363,"props":983,"children":984},{"style":376},[985],{"type":57,"value":986},"print(\"matmul:\", (b @ b).sum())   # expect 64.0\n",{"type":51,"tag":363,"props":988,"children":990},{"class":365,"line":989},8,[991],{"type":51,"tag":363,"props":992,"children":993},{"style":387},[994],{"type":57,"value":995},"EOF\n",{"type":51,"tag":363,"props":997,"children":999},{"class":365,"line":998},9,[1000,1004,1008,1012,1016],{"type":51,"tag":363,"props":1001,"children":1002},{"style":370},[1003],{"type":57,"value":39},{"type":51,"tag":363,"props":1005,"children":1006},{"style":387},[1007],{"type":57,"value":390},{"type":51,"tag":363,"props":1009,"children":1010},{"style":681},[1011],{"type":57,"value":923},{"type":51,"tag":363,"props":1013,"children":1014},{"style":376},[1015],{"type":57,"value":928},{"type":51,"tag":363,"props":1017,"children":1018},{"style":387},[1019],{"type":57,"value":442},{"type":51,"tag":363,"props":1021,"children":1023},{"class":365,"line":1022},10,[1024,1029,1034,1038,1042],{"type":51,"tag":363,"props":1025,"children":1026},{"style":370},[1027],{"type":57,"value":1028},"rm",{"type":51,"tag":363,"props":1030,"children":1031},{"style":376},[1032],{"type":57,"value":1033}," -rf",{"type":51,"tag":363,"props":1035,"children":1036},{"style":387},[1037],{"type":57,"value":390},{"type":51,"tag":363,"props":1039,"children":1040},{"style":681},[1041],{"type":57,"value":923},{"type":51,"tag":363,"props":1043,"children":1044},{"style":387},[1045],{"type":57,"value":442},{"type":51,"tag":67,"props":1047,"children":1048},{},[1049,1051,1057,1058,1064,1066,1071],{"type":57,"value":1050},"Expect ",{"type":51,"tag":103,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":57,"value":1056},"sum: 45",{"type":57,"value":258},{"type":51,"tag":103,"props":1059,"children":1061},{"className":1060},[],[1062],{"type":57,"value":1063},"matmul: 64.0",{"type":57,"value":1065},". If ",{"type":51,"tag":103,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":57,"value":39},{"type":57,"value":1072}," is missing, the env is not activated — see Troubleshooting.",{"type":51,"tag":345,"props":1074,"children":1076},{"id":1075},"gpu-usage-check-mandatory-when-a-supported-gpu-is-present",[1077],{"type":57,"value":1078},"GPU usage check (mandatory when a supported GPU is present)",{"type":51,"tag":67,"props":1080,"children":1081},{},[1082,1084,1089],{"type":57,"value":1083},"A passing smoke test does ",{"type":51,"tag":95,"props":1085,"children":1086},{},[1087],{"type":57,"value":1088},"not",{"type":57,"value":1090}," prove GPU usage — a CPU-variant install on a GPU box produces correct results too. Run both steps.",{"type":51,"tag":67,"props":1092,"children":1093},{},[1094,1099,1101,1107],{"type":51,"tag":95,"props":1095,"children":1096},{},[1097],{"type":57,"value":1098},"1. Force a GPU launch.",{"type":57,"value":1100}," ",{"type":51,"tag":103,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":57,"value":1106},"legate --gpus N",{"type":57,"value":1108}," requests N GPUs; fails fast if no GPU is visible or the CPU variant is installed.",{"type":51,"tag":352,"props":1110,"children":1112},{"className":354,"code":1111,"language":356,"meta":357,"style":357},"TMP=$(mktemp -d)\ncat > \"$TMP\u002Fcheck.py\" \u003C\u003C'EOF'\nimport cupynumeric as np\nprint(np.ones((4096, 4096)).sum())\nEOF\nlegate --gpus 1 \"$TMP\u002Fcheck.py\"\nrm -rf \"$TMP\"\n",[1113],{"type":51,"tag":103,"props":1114,"children":1115},{"__ignoreMap":357},[1116,1139,1175,1182,1190,1197,1231],{"type":51,"tag":363,"props":1117,"children":1118},{"class":365,"line":366},[1119,1123,1127,1131,1135],{"type":51,"tag":363,"props":1120,"children":1121},{"style":681},[1122],{"type":57,"value":881},{"type":51,"tag":363,"props":1124,"children":1125},{"style":387},[1126],{"type":57,"value":886},{"type":51,"tag":363,"props":1128,"children":1129},{"style":370},[1130],{"type":57,"value":891},{"type":51,"tag":363,"props":1132,"children":1133},{"style":376},[1134],{"type":57,"value":896},{"type":51,"tag":363,"props":1136,"children":1137},{"style":387},[1138],{"type":57,"value":901},{"type":51,"tag":363,"props":1140,"children":1141},{"class":365,"line":445},[1142,1146,1150,1154,1158,1163,1167,1171],{"type":51,"tag":363,"props":1143,"children":1144},{"style":370},[1145],{"type":57,"value":909},{"type":51,"tag":363,"props":1147,"children":1148},{"style":387},[1149],{"type":57,"value":914},{"type":51,"tag":363,"props":1151,"children":1152},{"style":387},[1153],{"type":57,"value":390},{"type":51,"tag":363,"props":1155,"children":1156},{"style":681},[1157],{"type":57,"value":923},{"type":51,"tag":363,"props":1159,"children":1160},{"style":376},[1161],{"type":57,"value":1162},"\u002Fcheck.py",{"type":51,"tag":363,"props":1164,"children":1165},{"style":387},[1166],{"type":57,"value":693},{"type":51,"tag":363,"props":1168,"children":1169},{"style":387},[1170],{"type":57,"value":937},{"type":51,"tag":363,"props":1172,"children":1173},{"style":387},[1174],{"type":57,"value":942},{"type":51,"tag":363,"props":1176,"children":1177},{"class":365,"line":828},[1178],{"type":51,"tag":363,"props":1179,"children":1180},{"style":376},[1181],{"type":57,"value":950},{"type":51,"tag":363,"props":1183,"children":1184},{"class":365,"line":953},[1185],{"type":51,"tag":363,"props":1186,"children":1187},{"style":376},[1188],{"type":57,"value":1189},"print(np.ones((4096, 4096)).sum())\n",{"type":51,"tag":363,"props":1191,"children":1192},{"class":365,"line":962},[1193],{"type":51,"tag":363,"props":1194,"children":1195},{"style":387},[1196],{"type":57,"value":995},{"type":51,"tag":363,"props":1198,"children":1199},{"class":365,"line":971},[1200,1204,1209,1215,1219,1223,1227],{"type":51,"tag":363,"props":1201,"children":1202},{"style":370},[1203],{"type":57,"value":39},{"type":51,"tag":363,"props":1205,"children":1206},{"style":376},[1207],{"type":57,"value":1208}," --gpus",{"type":51,"tag":363,"props":1210,"children":1212},{"style":1211},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1213],{"type":57,"value":1214}," 1",{"type":51,"tag":363,"props":1216,"children":1217},{"style":387},[1218],{"type":57,"value":390},{"type":51,"tag":363,"props":1220,"children":1221},{"style":681},[1222],{"type":57,"value":923},{"type":51,"tag":363,"props":1224,"children":1225},{"style":376},[1226],{"type":57,"value":1162},{"type":51,"tag":363,"props":1228,"children":1229},{"style":387},[1230],{"type":57,"value":442},{"type":51,"tag":363,"props":1232,"children":1233},{"class":365,"line":980},[1234,1238,1242,1246,1250],{"type":51,"tag":363,"props":1235,"children":1236},{"style":370},[1237],{"type":57,"value":1028},{"type":51,"tag":363,"props":1239,"children":1240},{"style":376},[1241],{"type":57,"value":1033},{"type":51,"tag":363,"props":1243,"children":1244},{"style":387},[1245],{"type":57,"value":390},{"type":51,"tag":363,"props":1247,"children":1248},{"style":681},[1249],{"type":57,"value":923},{"type":51,"tag":363,"props":1251,"children":1252},{"style":387},[1253],{"type":57,"value":442},{"type":51,"tag":67,"props":1255,"children":1256},{},[1257,1258,1264,1266,1272,1273,1279,1281,1287,1289,1294],{"type":57,"value":1050},{"type":51,"tag":103,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":57,"value":1263},"16777216.0",{"type":57,"value":1265},". If you see ",{"type":51,"tag":103,"props":1267,"children":1269},{"className":1268},[],[1270],{"type":57,"value":1271},"CUDA driver",{"type":57,"value":110},{"type":51,"tag":103,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":57,"value":1278},"libcudart",{"type":57,"value":1280},", or ",{"type":51,"tag":103,"props":1282,"children":1284},{"className":1283},[],[1285],{"type":57,"value":1286},"no GPUs available",{"type":57,"value":1288},", the CPU variant is installed; reinstall with ",{"type":51,"tag":103,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":57,"value":666},{"type":57,"value":302},{"type":51,"tag":67,"props":1296,"children":1297},{},[1298,1303,1305,1310],{"type":51,"tag":95,"props":1299,"children":1300},{},[1301],{"type":57,"value":1302},"2. Confirm the GPU was touched.",{"type":57,"value":1304}," Run a deadline-bounded matmul loop alongside ",{"type":51,"tag":103,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":57,"value":292},{"type":57,"value":1311},", all from one shell — no second-terminal race:",{"type":51,"tag":352,"props":1313,"children":1315},{"className":354,"code":1314,"language":356,"meta":357,"style":357},"TMPDIR_GPU=$(mktemp -d)\nSCRIPT=\"$TMPDIR_GPU\u002Fcupynumeric_gpu_check.py\"\ncat > \"$SCRIPT\" \u003C\u003C'EOF'\nimport cupynumeric as np, time\na = np.ones((10000, 10000))\ndeadline = time.time() + 20\niters = 0\nwhile time.time() \u003C deadline:\n    b = a @ a\n    _ = float(b.sum())   # force sync so the matmul actually runs\n    iters += 1\nprint(\"iters:\", iters)\nEOF\nlegate --gpus 1 \"$SCRIPT\" &\nWORKLOAD=$!\nsleep 5                                     # buffer for Legate startup\nfor _ in $(seq 10); do                      # 10 samples at 1s — covers slow startup\n  nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader\n  sleep 1\ndone\nwait \"$WORKLOAD\"\nrm -rf \"$TMPDIR_GPU\"\n",[1316],{"type":51,"tag":103,"props":1317,"children":1318},{"__ignoreMap":357},[1319,1343,1373,1405,1413,1421,1429,1437,1445,1453,1461,1470,1479,1487,1520,1538,1558,1608,1627,1641,1650,1672],{"type":51,"tag":363,"props":1320,"children":1321},{"class":365,"line":366},[1322,1327,1331,1335,1339],{"type":51,"tag":363,"props":1323,"children":1324},{"style":681},[1325],{"type":57,"value":1326},"TMPDIR_GPU",{"type":51,"tag":363,"props":1328,"children":1329},{"style":387},[1330],{"type":57,"value":886},{"type":51,"tag":363,"props":1332,"children":1333},{"style":370},[1334],{"type":57,"value":891},{"type":51,"tag":363,"props":1336,"children":1337},{"style":376},[1338],{"type":57,"value":896},{"type":51,"tag":363,"props":1340,"children":1341},{"style":387},[1342],{"type":57,"value":901},{"type":51,"tag":363,"props":1344,"children":1345},{"class":365,"line":445},[1346,1351,1355,1359,1364,1369],{"type":51,"tag":363,"props":1347,"children":1348},{"style":681},[1349],{"type":57,"value":1350},"SCRIPT",{"type":51,"tag":363,"props":1352,"children":1353},{"style":387},[1354],{"type":57,"value":688},{"type":51,"tag":363,"props":1356,"children":1357},{"style":387},[1358],{"type":57,"value":693},{"type":51,"tag":363,"props":1360,"children":1361},{"style":681},[1362],{"type":57,"value":1363},"$TMPDIR_GPU",{"type":51,"tag":363,"props":1365,"children":1366},{"style":376},[1367],{"type":57,"value":1368},"\u002Fcupynumeric_gpu_check.py",{"type":51,"tag":363,"props":1370,"children":1371},{"style":387},[1372],{"type":57,"value":442},{"type":51,"tag":363,"props":1374,"children":1375},{"class":365,"line":828},[1376,1380,1384,1388,1393,1397,1401],{"type":51,"tag":363,"props":1377,"children":1378},{"style":370},[1379],{"type":57,"value":909},{"type":51,"tag":363,"props":1381,"children":1382},{"style":387},[1383],{"type":57,"value":914},{"type":51,"tag":363,"props":1385,"children":1386},{"style":387},[1387],{"type":57,"value":390},{"type":51,"tag":363,"props":1389,"children":1390},{"style":681},[1391],{"type":57,"value":1392},"$SCRIPT",{"type":51,"tag":363,"props":1394,"children":1395},{"style":387},[1396],{"type":57,"value":693},{"type":51,"tag":363,"props":1398,"children":1399},{"style":387},[1400],{"type":57,"value":937},{"type":51,"tag":363,"props":1402,"children":1403},{"style":387},[1404],{"type":57,"value":942},{"type":51,"tag":363,"props":1406,"children":1407},{"class":365,"line":953},[1408],{"type":51,"tag":363,"props":1409,"children":1410},{"style":376},[1411],{"type":57,"value":1412},"import cupynumeric as np, time\n",{"type":51,"tag":363,"props":1414,"children":1415},{"class":365,"line":962},[1416],{"type":51,"tag":363,"props":1417,"children":1418},{"style":376},[1419],{"type":57,"value":1420},"a = np.ones((10000, 10000))\n",{"type":51,"tag":363,"props":1422,"children":1423},{"class":365,"line":971},[1424],{"type":51,"tag":363,"props":1425,"children":1426},{"style":376},[1427],{"type":57,"value":1428},"deadline = time.time() + 20\n",{"type":51,"tag":363,"props":1430,"children":1431},{"class":365,"line":980},[1432],{"type":51,"tag":363,"props":1433,"children":1434},{"style":376},[1435],{"type":57,"value":1436},"iters = 0\n",{"type":51,"tag":363,"props":1438,"children":1439},{"class":365,"line":989},[1440],{"type":51,"tag":363,"props":1441,"children":1442},{"style":376},[1443],{"type":57,"value":1444},"while time.time() \u003C deadline:\n",{"type":51,"tag":363,"props":1446,"children":1447},{"class":365,"line":998},[1448],{"type":51,"tag":363,"props":1449,"children":1450},{"style":376},[1451],{"type":57,"value":1452},"    b = a @ a\n",{"type":51,"tag":363,"props":1454,"children":1455},{"class":365,"line":1022},[1456],{"type":51,"tag":363,"props":1457,"children":1458},{"style":376},[1459],{"type":57,"value":1460},"    _ = float(b.sum())   # force sync so the matmul actually runs\n",{"type":51,"tag":363,"props":1462,"children":1464},{"class":365,"line":1463},11,[1465],{"type":51,"tag":363,"props":1466,"children":1467},{"style":376},[1468],{"type":57,"value":1469},"    iters += 1\n",{"type":51,"tag":363,"props":1471,"children":1473},{"class":365,"line":1472},12,[1474],{"type":51,"tag":363,"props":1475,"children":1476},{"style":376},[1477],{"type":57,"value":1478},"print(\"iters:\", iters)\n",{"type":51,"tag":363,"props":1480,"children":1482},{"class":365,"line":1481},13,[1483],{"type":51,"tag":363,"props":1484,"children":1485},{"style":387},[1486],{"type":57,"value":995},{"type":51,"tag":363,"props":1488,"children":1490},{"class":365,"line":1489},14,[1491,1495,1499,1503,1507,1511,1515],{"type":51,"tag":363,"props":1492,"children":1493},{"style":370},[1494],{"type":57,"value":39},{"type":51,"tag":363,"props":1496,"children":1497},{"style":376},[1498],{"type":57,"value":1208},{"type":51,"tag":363,"props":1500,"children":1501},{"style":1211},[1502],{"type":57,"value":1214},{"type":51,"tag":363,"props":1504,"children":1505},{"style":387},[1506],{"type":57,"value":390},{"type":51,"tag":363,"props":1508,"children":1509},{"style":681},[1510],{"type":57,"value":1392},{"type":51,"tag":363,"props":1512,"children":1513},{"style":387},[1514],{"type":57,"value":693},{"type":51,"tag":363,"props":1516,"children":1517},{"style":387},[1518],{"type":57,"value":1519}," &\n",{"type":51,"tag":363,"props":1521,"children":1523},{"class":365,"line":1522},15,[1524,1529,1533],{"type":51,"tag":363,"props":1525,"children":1526},{"style":681},[1527],{"type":57,"value":1528},"WORKLOAD",{"type":51,"tag":363,"props":1530,"children":1531},{"style":387},[1532],{"type":57,"value":688},{"type":51,"tag":363,"props":1534,"children":1535},{"style":681},[1536],{"type":57,"value":1537},"$!\n",{"type":51,"tag":363,"props":1539,"children":1541},{"class":365,"line":1540},16,[1542,1547,1552],{"type":51,"tag":363,"props":1543,"children":1544},{"style":370},[1545],{"type":57,"value":1546},"sleep",{"type":51,"tag":363,"props":1548,"children":1549},{"style":1211},[1550],{"type":57,"value":1551}," 5",{"type":51,"tag":363,"props":1553,"children":1555},{"style":1554},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1556],{"type":57,"value":1557},"                                     # buffer for Legate startup\n",{"type":51,"tag":363,"props":1559,"children":1561},{"class":365,"line":1560},17,[1562,1568,1573,1578,1583,1588,1593,1598,1603],{"type":51,"tag":363,"props":1563,"children":1565},{"style":1564},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1566],{"type":57,"value":1567},"for",{"type":51,"tag":363,"props":1569,"children":1570},{"style":681},[1571],{"type":57,"value":1572}," _ ",{"type":51,"tag":363,"props":1574,"children":1575},{"style":1564},[1576],{"type":57,"value":1577},"in",{"type":51,"tag":363,"props":1579,"children":1580},{"style":387},[1581],{"type":57,"value":1582}," $(",{"type":51,"tag":363,"props":1584,"children":1585},{"style":370},[1586],{"type":57,"value":1587},"seq",{"type":51,"tag":363,"props":1589,"children":1590},{"style":1211},[1591],{"type":57,"value":1592}," 10",{"type":51,"tag":363,"props":1594,"children":1595},{"style":387},[1596],{"type":57,"value":1597},");",{"type":51,"tag":363,"props":1599,"children":1600},{"style":1564},[1601],{"type":57,"value":1602}," do",{"type":51,"tag":363,"props":1604,"children":1605},{"style":1554},[1606],{"type":57,"value":1607},"                      # 10 samples at 1s — covers slow startup\n",{"type":51,"tag":363,"props":1609,"children":1611},{"class":365,"line":1610},18,[1612,1617,1622],{"type":51,"tag":363,"props":1613,"children":1614},{"style":370},[1615],{"type":57,"value":1616},"  nvidia-smi",{"type":51,"tag":363,"props":1618,"children":1619},{"style":376},[1620],{"type":57,"value":1621}," --query-gpu=utilization.gpu,memory.used",{"type":51,"tag":363,"props":1623,"children":1624},{"style":376},[1625],{"type":57,"value":1626}," --format=csv,noheader\n",{"type":51,"tag":363,"props":1628,"children":1630},{"class":365,"line":1629},19,[1631,1636],{"type":51,"tag":363,"props":1632,"children":1633},{"style":370},[1634],{"type":57,"value":1635},"  sleep",{"type":51,"tag":363,"props":1637,"children":1638},{"style":1211},[1639],{"type":57,"value":1640}," 1\n",{"type":51,"tag":363,"props":1642,"children":1644},{"class":365,"line":1643},20,[1645],{"type":51,"tag":363,"props":1646,"children":1647},{"style":1564},[1648],{"type":57,"value":1649},"done\n",{"type":51,"tag":363,"props":1651,"children":1653},{"class":365,"line":1652},21,[1654,1659,1663,1668],{"type":51,"tag":363,"props":1655,"children":1656},{"style":817},[1657],{"type":57,"value":1658},"wait",{"type":51,"tag":363,"props":1660,"children":1661},{"style":387},[1662],{"type":57,"value":390},{"type":51,"tag":363,"props":1664,"children":1665},{"style":681},[1666],{"type":57,"value":1667},"$WORKLOAD",{"type":51,"tag":363,"props":1669,"children":1670},{"style":387},[1671],{"type":57,"value":442},{"type":51,"tag":363,"props":1673,"children":1675},{"class":365,"line":1674},22,[1676,1680,1684,1688,1692],{"type":51,"tag":363,"props":1677,"children":1678},{"style":370},[1679],{"type":57,"value":1028},{"type":51,"tag":363,"props":1681,"children":1682},{"style":376},[1683],{"type":57,"value":1033},{"type":51,"tag":363,"props":1685,"children":1686},{"style":387},[1687],{"type":57,"value":390},{"type":51,"tag":363,"props":1689,"children":1690},{"style":681},[1691],{"type":57,"value":1363},{"type":51,"tag":363,"props":1693,"children":1694},{"style":387},[1695],{"type":57,"value":442},{"type":51,"tag":67,"props":1697,"children":1698},{},[1699,1700,1706,1708,1714,1716,1722,1724,1730,1732,1738],{"type":57,"value":1050},{"type":51,"tag":103,"props":1701,"children":1703},{"className":1702},[],[1704],{"type":57,"value":1705},"memory.used",{"type":57,"value":1707}," in the GiB range across most samples and non-trivial ",{"type":51,"tag":103,"props":1709,"children":1711},{"className":1710},[],[1712],{"type":57,"value":1713},"utilization.gpu",{"type":57,"value":1715}," in several. If both stay at baseline across every sample, the GPU variant is not installed — check ",{"type":51,"tag":103,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":57,"value":1721},"conda list cupynumeric",{"type":57,"value":1723}," for ",{"type":51,"tag":103,"props":1725,"children":1727},{"className":1726},[],[1728],{"type":57,"value":1729},"*_gpu",{"type":57,"value":1731}," (not ",{"type":51,"tag":103,"props":1733,"children":1735},{"className":1734},[],[1736],{"type":57,"value":1737},"*_cpu",{"type":57,"value":1739},").",{"type":51,"tag":345,"props":1741,"children":1743},{"id":1742},"deeper-recipes",[1744],{"type":57,"value":1745},"Deeper recipes",{"type":51,"tag":67,"props":1747,"children":1748},{},[1749,1751,1757],{"type":57,"value":1750},"See ",{"type":51,"tag":506,"props":1752,"children":1754},{"href":1753},"references\u002Fverification_examples.md",[1755],{"type":57,"value":1756},"verification_examples.md",{"type":57,"value":1758}," for multi-GPU checks, CPU fallback, container, and troubleshooting.",{"type":51,"tag":60,"props":1760,"children":1762},{"id":1761},"limitations",[1763],{"type":57,"value":1764},"Limitations",{"type":51,"tag":87,"props":1766,"children":1767},{},[1768,1794,1825,1848,1858,1875],{"type":51,"tag":91,"props":1769,"children":1770},{},[1771,1776,1778,1784,1786,1792],{"type":51,"tag":95,"props":1772,"children":1773},{},[1774],{"type":57,"value":1775},"Don't mix conda and pip in one env.",{"type":57,"value":1777}," Mixing overrides the first install and breaks at import. To switch, run ",{"type":51,"tag":103,"props":1779,"children":1781},{"className":1780},[],[1782],{"type":57,"value":1783},"pip uninstall nvidia-cupynumeric",{"type":57,"value":1785}," or ",{"type":51,"tag":103,"props":1787,"children":1789},{"className":1788},[],[1790],{"type":57,"value":1791},"conda remove cupynumeric",{"type":57,"value":1793}," first.",{"type":51,"tag":91,"props":1795,"children":1796},{},[1797,1809,1811,1816,1818,1824],{"type":51,"tag":95,"props":1798,"children":1799},{},[1800,1802,1807],{"type":57,"value":1801},"Use the ",{"type":51,"tag":103,"props":1803,"children":1805},{"className":1804},[],[1806],{"type":57,"value":39},{"type":57,"value":1808}," launcher for multi-GPU \u002F multi-rank runs.",{"type":57,"value":1810}," Plain ",{"type":51,"tag":103,"props":1812,"children":1814},{"className":1813},[],[1815],{"type":57,"value":19},{"type":57,"value":1817}," runs single-process: ",{"type":51,"tag":103,"props":1819,"children":1821},{"className":1820},[],[1822],{"type":57,"value":1823},"legate --gpus 2 script.py",{"type":57,"value":302},{"type":51,"tag":91,"props":1826,"children":1827},{},[1828,1839,1841,1846],{"type":51,"tag":95,"props":1829,"children":1830},{},[1831,1833,1838],{"type":57,"value":1832},"Force the GPU variant on a CPU-only host with ",{"type":51,"tag":103,"props":1834,"children":1836},{"className":1835},[],[1837],{"type":57,"value":666},{"type":57,"value":302},{"type":57,"value":1840}," conda otherwise auto-selects the CPU or GPU variant from ",{"type":51,"tag":103,"props":1842,"children":1844},{"className":1843},[],[1845],{"type":57,"value":292},{"type":57,"value":1847}," at install time.",{"type":51,"tag":91,"props":1849,"children":1850},{},[1851,1856],{"type":51,"tag":95,"props":1852,"children":1853},{},[1854],{"type":57,"value":1855},"Require Volta or newer.",{"type":57,"value":1857}," Pascal (GTX 10xx \u002F P100) is unsupported.",{"type":51,"tag":91,"props":1859,"children":1860},{},[1861,1873],{"type":51,"tag":95,"props":1862,"children":1863},{},[1864,1866,1871],{"type":57,"value":1865},"Verify ",{"type":51,"tag":103,"props":1867,"children":1869},{"className":1868},[],[1870],{"type":57,"value":256},{"type":57,"value":1872}," ≥ 24.1.",{"type":57,"value":1874}," Older releases silently break variant selection.",{"type":51,"tag":91,"props":1876,"children":1877},{},[1878,1883,1885,1891,1892,1898],{"type":51,"tag":95,"props":1879,"children":1880},{},[1881],{"type":57,"value":1882},"Treat multi-node \u002F MPI \u002F UCX as out of scope.",{"type":57,"value":1884}," Defer to ",{"type":51,"tag":506,"props":1886,"children":1889},{"href":1887,"rel":1888},"https:\u002F\u002Fdocs.nvidia.com\u002Flegate\u002Flatest\u002Fnetworking-wheels.html",[510],[1890],{"type":57,"value":1887},{"type":57,"value":258},{"type":51,"tag":506,"props":1893,"children":1896},{"href":1894,"rel":1895},"https:\u002F\u002Fdocs.nvidia.com\u002Flegate\u002Flatest\u002Fmpi-wrapper.html",[510],[1897],{"type":57,"value":1894},{"type":57,"value":302},{"type":51,"tag":60,"props":1900,"children":1902},{"id":1901},"troubleshooting",[1903],{"type":57,"value":1904},"Troubleshooting",{"type":51,"tag":87,"props":1906,"children":1907},{},[1908,1945,1974,1996],{"type":51,"tag":91,"props":1909,"children":1910},{},[1911,1920,1922,1928,1929,1935,1937,1943],{"type":51,"tag":95,"props":1912,"children":1913},{},[1914],{"type":51,"tag":103,"props":1915,"children":1917},{"className":1916},[],[1918],{"type":57,"value":1919},"ModuleNotFoundError: No module named 'cupynumeric'",{"type":57,"value":1921}," → Run ",{"type":51,"tag":103,"props":1923,"children":1925},{"className":1924},[],[1926],{"type":57,"value":1927},"which python",{"type":57,"value":258},{"type":51,"tag":103,"props":1930,"children":1932},{"className":1931},[],[1933],{"type":57,"value":1934},"pip list | grep cupynumeric",{"type":57,"value":1936}," (or ",{"type":51,"tag":103,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":57,"value":1942},"conda list | grep cupynumeric",{"type":57,"value":1944},") from the same shell to find the env mismatch.",{"type":51,"tag":91,"props":1946,"children":1947},{},[1948,1964,1966,1972],{"type":51,"tag":95,"props":1949,"children":1950},{},[1951,1957,1959],{"type":51,"tag":103,"props":1952,"children":1954},{"className":1953},[],[1955],{"type":57,"value":1956},"ImportError",{"type":57,"value":1958}," mentioning CUDA \u002F ",{"type":51,"tag":103,"props":1960,"children":1962},{"className":1961},[],[1963],{"type":57,"value":1278},{"type":57,"value":1965}," → Reinstall with ",{"type":51,"tag":103,"props":1967,"children":1969},{"className":1968},[],[1970],{"type":57,"value":1971},"CONDA_OVERRIDE_CUDA=\"\u003Cyour-cuda-version>\"",{"type":57,"value":1973},"; the CPU variant is on a GPU box, or CUDA versions are mismatched.",{"type":51,"tag":91,"props":1975,"children":1976},{},[1977,1986,1988,1994],{"type":51,"tag":95,"props":1978,"children":1979},{},[1980],{"type":51,"tag":103,"props":1981,"children":1983},{"className":1982},[],[1984],{"type":57,"value":1985},"legate: command not found",{"type":57,"value":1987}," → Activate the env, then run ",{"type":51,"tag":103,"props":1989,"children":1991},{"className":1990},[],[1992],{"type":57,"value":1993},"which legate",{"type":57,"value":1995}," to confirm.",{"type":51,"tag":91,"props":1997,"children":1998},{},[1999,2004],{"type":51,"tag":95,"props":2000,"children":2001},{},[2002],{"type":57,"value":2003},"Slower than NumPy on a laptop",{"type":57,"value":2005}," → Expect this for small problems (Legate per-task overhead). See the cuPyNumeric FAQ.",{"type":51,"tag":60,"props":2007,"children":2009},{"id":2008},"see-also",[2010],{"type":57,"value":2011},"See also",{"type":51,"tag":87,"props":2013,"children":2014},{},[2015,2024,2034],{"type":51,"tag":91,"props":2016,"children":2017},{},[2018,2022],{"type":51,"tag":506,"props":2019,"children":2020},{"href":1753},[2021],{"type":57,"value":1753},{"type":57,"value":2023}," — verification + troubleshooting recipes.",{"type":51,"tag":91,"props":2025,"children":2026},{},[2027,2029],{"type":57,"value":2028},"Upstream docs: ",{"type":51,"tag":506,"props":2030,"children":2032},{"href":46,"rel":2031},[510],[2033],{"type":57,"value":46},{"type":51,"tag":91,"props":2035,"children":2036},{},[2037,2039],{"type":57,"value":2038},"Legate requirements: ",{"type":51,"tag":506,"props":2040,"children":2043},{"href":2041,"rel":2042},"https:\u002F\u002Fdocs.nvidia.com\u002Flegate\u002Flatest\u002Finstallation.html",[510],[2044],{"type":57,"value":2041},{"type":51,"tag":2046,"props":2047,"children":2048},"style",{},[2049],{"type":57,"value":2050},"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":2052,"total":2207},[2053,2071,2085,2096,2108,2122,2135,2149,2162,2173,2187,2196],{"slug":2054,"name":2054,"fn":2055,"description":2056,"org":2057,"tags":2058,"stars":2068,"repoUrl":2069,"updatedAt":2070},"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},[2059,2062,2065],{"name":2060,"slug":2061,"type":15},"Documentation","documentation",{"name":2063,"slug":2064,"type":15},"MCP","mcp",{"name":2066,"slug":2067,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2072,"name":2072,"fn":2073,"description":2074,"org":2075,"tags":2076,"stars":2082,"repoUrl":2083,"updatedAt":2084},"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},[2077,2080,2081],{"name":2078,"slug":2079,"type":15},"Containers","containers",{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2086,"name":2086,"fn":2087,"description":2088,"org":2089,"tags":2090,"stars":2082,"repoUrl":2083,"updatedAt":2095},"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},[2091,2094],{"name":2092,"slug":2093,"type":15},"CI\u002FCD","ci-cd",{"name":13,"slug":14,"type":15},"2026-07-14T05:25:59.97109",{"slug":2097,"name":2097,"fn":2098,"description":2099,"org":2100,"tags":2101,"stars":2082,"repoUrl":2083,"updatedAt":2107},"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},[2102,2103,2104],{"name":2092,"slug":2093,"type":15},{"name":13,"slug":14,"type":15},{"name":2105,"slug":2106,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2109,"name":2109,"fn":2110,"description":2111,"org":2112,"tags":2113,"stars":2082,"repoUrl":2083,"updatedAt":2121},"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},[2114,2117,2118],{"name":2115,"slug":2116,"type":15},"Debugging","debugging",{"name":2105,"slug":2106,"type":15},{"name":2119,"slug":2120,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2123,"name":2123,"fn":2124,"description":2125,"org":2126,"tags":2127,"stars":2082,"repoUrl":2083,"updatedAt":2134},"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},[2128,2131],{"name":2129,"slug":2130,"type":15},"Best Practices","best-practices",{"name":2132,"slug":2133,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2136,"name":2136,"fn":2137,"description":2138,"org":2139,"tags":2140,"stars":2082,"repoUrl":2083,"updatedAt":2148},"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},[2141,2144,2147],{"name":2142,"slug":2143,"type":15},"Machine Learning","machine-learning",{"name":2145,"slug":2146,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2150,"name":2150,"fn":2151,"description":2152,"org":2153,"tags":2154,"stars":2082,"repoUrl":2083,"updatedAt":2161},"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},[2155,2158],{"name":2156,"slug":2157,"type":15},"QA","qa",{"name":2159,"slug":2160,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":2163,"name":2163,"fn":2164,"description":2165,"org":2166,"tags":2167,"stars":2082,"repoUrl":2083,"updatedAt":2172},"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},[2168,2169],{"name":13,"slug":14,"type":15},{"name":2170,"slug":2171,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2174,"name":2174,"fn":2175,"description":2176,"org":2177,"tags":2178,"stars":2082,"repoUrl":2083,"updatedAt":2186},"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},[2179,2182,2183],{"name":2180,"slug":2181,"type":15},"Code Review","code-review",{"name":2105,"slug":2106,"type":15},{"name":2184,"slug":2185,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2188,"name":2188,"fn":2189,"description":2190,"org":2191,"tags":2192,"stars":2082,"repoUrl":2083,"updatedAt":2195},"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},[2193,2194],{"name":2156,"slug":2157,"type":15},{"name":2159,"slug":2160,"type":15},"2026-07-14T05:25:54.928983",{"slug":2197,"name":2197,"fn":2198,"description":2199,"org":2200,"tags":2201,"stars":2082,"repoUrl":2083,"updatedAt":2206},"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},[2202,2205],{"name":2203,"slug":2204,"type":15},"Automation","automation",{"name":2092,"slug":2093,"type":15},"2026-07-30T05:29:03.275638",496,{"items":2209,"total":2305},[2210,2227,2237,2251,2261,2276,2291],{"slug":2211,"name":2211,"fn":2212,"description":2213,"org":2214,"tags":2215,"stars":20,"repoUrl":21,"updatedAt":2226},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2216,2219,2222,2223],{"name":2217,"slug":2218,"type":15},"Data Analysis","data-analysis",{"name":2220,"slug":2221,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":2224,"slug":2225,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":2228,"name":2228,"fn":2229,"description":2230,"org":2231,"tags":2232,"stars":20,"repoUrl":21,"updatedAt":2236},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2233,2234,2235],{"name":13,"slug":14,"type":15},{"name":2170,"slug":2171,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":2238,"name":2238,"fn":2239,"description":2240,"org":2241,"tags":2242,"stars":20,"repoUrl":21,"updatedAt":2250},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2243,2246,2247],{"name":2244,"slug":2245,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":2248,"slug":2249,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":2252,"name":2252,"fn":2253,"description":2254,"org":2255,"tags":2256,"stars":20,"repoUrl":21,"updatedAt":2260},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2257,2258,2259],{"name":2217,"slug":2218,"type":15},{"name":9,"slug":8,"type":15},{"name":2159,"slug":2160,"type":15},"2026-07-17T05:29:03.913266",{"slug":2262,"name":2262,"fn":2263,"description":2264,"org":2265,"tags":2266,"stars":20,"repoUrl":21,"updatedAt":2275},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2267,2268,2271,2272],{"name":2203,"slug":2204,"type":15},{"name":2269,"slug":2270,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":2273,"slug":2274,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":2277,"name":2277,"fn":2278,"description":2279,"org":2280,"tags":2281,"stars":20,"repoUrl":21,"updatedAt":2290},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2282,2283,2286,2287],{"name":13,"slug":14,"type":15},{"name":2284,"slug":2285,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":2288,"slug":2289,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":2292,"name":2292,"fn":2293,"description":2294,"org":2295,"tags":2296,"stars":20,"repoUrl":21,"updatedAt":2304},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2297,2298,2301],{"name":9,"slug":8,"type":15},{"name":2299,"slug":2300,"type":15},"Quantum Computing","quantum-computing",{"name":2302,"slug":2303,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305]