From 038ccc30f7c828f7297024f7228365d2f6f4b228 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 28 Aug 2026 11:38:16 -0500 Subject: [PATCH 1/5] Show mamba commands directly instead of a conda-then-swap note The docs recommended mamba but printed conda commands with a "replace conda with mamba" aside, so the recommended path required an extra mental substitution on every command. Lead with mamba for env creation; keep conda for activation, which mamba doesn't implement. Co-Authored-By: Claude Sonnet 5 --- CONTRIBUTING.md | 6 +++--- skills/cuopt-developer/SKILL.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f23b0cf181..f4cfb22a45 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,14 +157,14 @@ cd $CUOPT_HOME Please install conda if you don't have it already. You can install [miniforge](https://conda-forge.org/download/) or [miniconda](https://www.anaconda.com/docs/getting-started/miniconda/install#linux) -**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda. And it's the default package manager for miniforge. If you are using mamba just replace `conda` with `mamba` in the following commands. +**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda, and it's the default package manager for miniforge. The commands below use `mamba`; if you don't have it installed, replace `mamba` with `conda`. ```bash # create the conda environment (assuming in base `cuopt` directory) # note: cuOpt currently doesn't support `channel_priority: strict`; # use `channel_priority: flexible` instead -conda env create -p ./.cuopt_env --file conda/environments/all_cuda-133_arch-$(uname -m).yaml -# activate the environment +mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-133_arch-$(uname -m).yaml +# activate the environment (mamba does not implement 'activate'; use conda for this step) conda activate ./.cuopt_env ``` diff --git a/skills/cuopt-developer/SKILL.md b/skills/cuopt-developer/SKILL.md index 56a97c6585..3d7aa9ecd5 100644 --- a/skills/cuopt-developer/SKILL.md +++ b/skills/cuopt-developer/SKILL.md @@ -180,9 +180,9 @@ cuopt/ Skipping any of these surfaces as confusing runtime errors later. Run them in order: 1. **Check CUDA driver compatibility.** Run `nvidia-smi` and read the *CUDA Version* in the top-right corner — that's the maximum CUDA your driver supports. Pick a conda env file from `conda/environments/all_cuda-_arch-.yaml` whose CUDA major version is **≤** that. A mismatch builds successfully but fails at runtime inside RMM with `cudaMallocAsync not supported with this CUDA driver/runtime version` — verify this *before* the build, not after. -2. **Create and activate the conda env** before *any* build, test, or `pre-commit` command — this is allowed and expected (see [Refusal Rules](#refusal-rules--read-first)). Use a **local prefix env** (`./.cuopt_env`) per [CONTRIBUTING.md](../../CONTRIBUTING.md), with the env file you picked in step 1 (swap `conda`→`mamba` if available): +2. **Create and activate the conda env** before *any* build, test, or `pre-commit` command — this is allowed and expected (see [Refusal Rules](#refusal-rules--read-first)). Use a **local prefix env** (`./.cuopt_env`) per [CONTRIBUTING.md](../../CONTRIBUTING.md), with the env file you picked in step 1 (`mamba` is recommended and faster; swap in `conda` if `mamba` isn't available — `activate` always uses `conda`, since `mamba` doesn't implement it): ```bash - conda env create -p ./.cuopt_env --file conda/environments/all_cuda-_arch-$(uname -m).yaml + mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-_arch-$(uname -m).yaml conda activate ./.cuopt_env ``` Tests link against libraries compiled inside that env; a fresh shell without `conda activate ./.cuopt_env` hits cryptic linker errors. From 8347e09585d90d178c9385ed55e18abaae5a8a43 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 28 Aug 2026 11:52:17 -0500 Subject: [PATCH 2/5] Clarify that mamba isn't bundled with miniconda The mamba note didn't say which of the two installers just mentioned (miniforge, miniconda) actually includes it, so miniconda users had no signal that the mamba commands below would fail without an extra install step. Co-Authored-By: Claude Sonnet 5 --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f4cfb22a45..a13c611389 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,7 +157,7 @@ cd $CUOPT_HOME Please install conda if you don't have it already. You can install [miniforge](https://conda-forge.org/download/) or [miniconda](https://www.anaconda.com/docs/getting-started/miniconda/install#linux) -**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda, and it's the default package manager for miniforge. The commands below use `mamba`; if you don't have it installed, replace `mamba` with `conda`. +**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda. It's already included if you installed miniforge above; if you installed miniconda instead, it doesn't come bundled — follow the mamba link to install it into your base environment. The commands below use `mamba`; if you don't have it installed, replace `mamba` with `conda`. Either way, `conda` itself is still required — `mamba` doesn't implement environment activation, so `conda activate` is always used for that step. ```bash # create the conda environment (assuming in base `cuopt` directory) From 73c840a91adbda871ef8960aee93edba889fea0a Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 28 Aug 2026 12:04:37 -0500 Subject: [PATCH 3/5] Fix incorrect claim that mamba doesn't support activate Per review: mamba does support 'mamba activate' (confirmed against mamba's own docs, which present it as the standard approach with no version caveat). The earlier wording was based on a local mamba 1.4.2 test that hadn't run 'mamba init' first, not an actual limitation of mamba. Keep 'conda activate' in the example since it works regardless of mamba version or init state, but stop asserting mamba can't do it. Co-Authored-By: Claude Sonnet 5 --- CONTRIBUTING.md | 4 ++-- skills/cuopt-developer/SKILL.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a13c611389..f70af7f38f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,14 +157,14 @@ cd $CUOPT_HOME Please install conda if you don't have it already. You can install [miniforge](https://conda-forge.org/download/) or [miniconda](https://www.anaconda.com/docs/getting-started/miniconda/install#linux) -**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda. It's already included if you installed miniforge above; if you installed miniconda instead, it doesn't come bundled — follow the mamba link to install it into your base environment. The commands below use `mamba`; if you don't have it installed, replace `mamba` with `conda`. Either way, `conda` itself is still required — `mamba` doesn't implement environment activation, so `conda activate` is always used for that step. +**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda. It's already included if you installed miniforge above; if you installed miniconda instead, it doesn't come bundled — follow the mamba link to install it into your base environment. The commands below use `mamba`; if you don't have it installed, replace `mamba` with `conda`. `conda activate` is used for activation since it works regardless of mamba version or whether `mamba init` has been run — `mamba activate` is also fine if your setup already supports it. ```bash # create the conda environment (assuming in base `cuopt` directory) # note: cuOpt currently doesn't support `channel_priority: strict`; # use `channel_priority: flexible` instead mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-133_arch-$(uname -m).yaml -# activate the environment (mamba does not implement 'activate'; use conda for this step) +# activate the environment conda activate ./.cuopt_env ``` diff --git a/skills/cuopt-developer/SKILL.md b/skills/cuopt-developer/SKILL.md index 3d7aa9ecd5..bd9dd24050 100644 --- a/skills/cuopt-developer/SKILL.md +++ b/skills/cuopt-developer/SKILL.md @@ -180,7 +180,7 @@ cuopt/ Skipping any of these surfaces as confusing runtime errors later. Run them in order: 1. **Check CUDA driver compatibility.** Run `nvidia-smi` and read the *CUDA Version* in the top-right corner — that's the maximum CUDA your driver supports. Pick a conda env file from `conda/environments/all_cuda-_arch-.yaml` whose CUDA major version is **≤** that. A mismatch builds successfully but fails at runtime inside RMM with `cudaMallocAsync not supported with this CUDA driver/runtime version` — verify this *before* the build, not after. -2. **Create and activate the conda env** before *any* build, test, or `pre-commit` command — this is allowed and expected (see [Refusal Rules](#refusal-rules--read-first)). Use a **local prefix env** (`./.cuopt_env`) per [CONTRIBUTING.md](../../CONTRIBUTING.md), with the env file you picked in step 1 (`mamba` is recommended and faster; swap in `conda` if `mamba` isn't available — `activate` always uses `conda`, since `mamba` doesn't implement it): +2. **Create and activate the conda env** before *any* build, test, or `pre-commit` command — this is allowed and expected (see [Refusal Rules](#refusal-rules--read-first)). Use a **local prefix env** (`./.cuopt_env`) per [CONTRIBUTING.md](../../CONTRIBUTING.md), with the env file you picked in step 1 (`mamba` is recommended and faster; swap in `conda` if `mamba` isn't available — `conda activate` is used below since it works regardless of mamba version): ```bash mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-_arch-$(uname -m).yaml conda activate ./.cuopt_env From ada57fa0f1a614df1b767017a2b64896401596d5 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 28 Aug 2026 12:06:52 -0500 Subject: [PATCH 4/5] Show mamba activate first, with conda as the fallback Consistent with leading with mamba for env creation: show 'mamba activate' in the example, with an inline comment pointing to 'conda activate' as the fallback for setups where mamba init hasn't been run. Co-Authored-By: Claude Sonnet 5 --- CONTRIBUTING.md | 4 ++-- skills/cuopt-developer/SKILL.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f70af7f38f..70e498d479 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,7 +157,7 @@ cd $CUOPT_HOME Please install conda if you don't have it already. You can install [miniforge](https://conda-forge.org/download/) or [miniconda](https://www.anaconda.com/docs/getting-started/miniconda/install#linux) -**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda. It's already included if you installed miniforge above; if you installed miniconda instead, it doesn't come bundled — follow the mamba link to install it into your base environment. The commands below use `mamba`; if you don't have it installed, replace `mamba` with `conda`. `conda activate` is used for activation since it works regardless of mamba version or whether `mamba init` has been run — `mamba activate` is also fine if your setup already supports it. +**Note:** We recommend using [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) as the package manager for the conda environment. Mamba is faster and more efficient than conda. It's already included if you installed miniforge above; if you installed miniconda instead, it doesn't come bundled — follow the mamba link to install it into your base environment. The commands below use `mamba`; if you don't have it installed, replace `mamba` with `conda`. ```bash # create the conda environment (assuming in base `cuopt` directory) @@ -165,7 +165,7 @@ Please install conda if you don't have it already. You can install [miniforge](h # use `channel_priority: flexible` instead mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-133_arch-$(uname -m).yaml # activate the environment -conda activate ./.cuopt_env +mamba activate ./.cuopt_env # or: conda activate ./.cuopt_env (works even without `mamba init`) ``` - **Note**: the conda environment files are updated frequently, so the diff --git a/skills/cuopt-developer/SKILL.md b/skills/cuopt-developer/SKILL.md index bd9dd24050..4274ecff64 100644 --- a/skills/cuopt-developer/SKILL.md +++ b/skills/cuopt-developer/SKILL.md @@ -180,12 +180,12 @@ cuopt/ Skipping any of these surfaces as confusing runtime errors later. Run them in order: 1. **Check CUDA driver compatibility.** Run `nvidia-smi` and read the *CUDA Version* in the top-right corner — that's the maximum CUDA your driver supports. Pick a conda env file from `conda/environments/all_cuda-_arch-.yaml` whose CUDA major version is **≤** that. A mismatch builds successfully but fails at runtime inside RMM with `cudaMallocAsync not supported with this CUDA driver/runtime version` — verify this *before* the build, not after. -2. **Create and activate the conda env** before *any* build, test, or `pre-commit` command — this is allowed and expected (see [Refusal Rules](#refusal-rules--read-first)). Use a **local prefix env** (`./.cuopt_env`) per [CONTRIBUTING.md](../../CONTRIBUTING.md), with the env file you picked in step 1 (`mamba` is recommended and faster; swap in `conda` if `mamba` isn't available — `conda activate` is used below since it works regardless of mamba version): +2. **Create and activate the conda env** before *any* build, test, or `pre-commit` command — this is allowed and expected (see [Refusal Rules](#refusal-rules--read-first)). Use a **local prefix env** (`./.cuopt_env`) per [CONTRIBUTING.md](../../CONTRIBUTING.md), with the env file you picked in step 1 (`mamba` is recommended and faster; swap in `conda` if `mamba` isn't available): ```bash mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-_arch-$(uname -m).yaml - conda activate ./.cuopt_env + mamba activate ./.cuopt_env # or: conda activate ./.cuopt_env (works even without `mamba init`) ``` - Tests link against libraries compiled inside that env; a fresh shell without `conda activate ./.cuopt_env` hits cryptic linker errors. + Tests link against libraries compiled inside that env; a fresh shell without activating it hits cryptic linker errors. 3. **Set `PARALLEL_LEVEL`** if RAM is constrained — see [references/build_and_test.md](references/build_and_test.md). The default `$(nproc)` can OOM mid-build because CUDA compilation needs ~4–8 GB per job. 4. **For tests, fetch datasets first.** cuOpt tests need MPS files not in the repo — follow the dataset download steps in [CONTRIBUTING.md](../../CONTRIBUTING.md) ("Building for development" section) and export `RAPIDS_DATASET_ROOT_DIR`. From 25fa3ad1a9588eee041a4c57a93312dae99acf64 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 28 Aug 2026 12:07:10 -0500 Subject: [PATCH 5/5] Drop mamba init mention from activate fallback comment Co-Authored-By: Claude Sonnet 5 --- CONTRIBUTING.md | 2 +- skills/cuopt-developer/SKILL.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 70e498d479..43775983f9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -165,7 +165,7 @@ Please install conda if you don't have it already. You can install [miniforge](h # use `channel_priority: flexible` instead mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-133_arch-$(uname -m).yaml # activate the environment -mamba activate ./.cuopt_env # or: conda activate ./.cuopt_env (works even without `mamba init`) +mamba activate ./.cuopt_env # or: conda activate ./.cuopt_env ``` - **Note**: the conda environment files are updated frequently, so the diff --git a/skills/cuopt-developer/SKILL.md b/skills/cuopt-developer/SKILL.md index 4274ecff64..ff1738bc5f 100644 --- a/skills/cuopt-developer/SKILL.md +++ b/skills/cuopt-developer/SKILL.md @@ -183,7 +183,7 @@ Skipping any of these surfaces as confusing runtime errors later. Run them in or 2. **Create and activate the conda env** before *any* build, test, or `pre-commit` command — this is allowed and expected (see [Refusal Rules](#refusal-rules--read-first)). Use a **local prefix env** (`./.cuopt_env`) per [CONTRIBUTING.md](../../CONTRIBUTING.md), with the env file you picked in step 1 (`mamba` is recommended and faster; swap in `conda` if `mamba` isn't available): ```bash mamba env create -p ./.cuopt_env --file conda/environments/all_cuda-_arch-$(uname -m).yaml - mamba activate ./.cuopt_env # or: conda activate ./.cuopt_env (works even without `mamba init`) + mamba activate ./.cuopt_env # or: conda activate ./.cuopt_env ``` Tests link against libraries compiled inside that env; a fresh shell without activating it hits cryptic linker errors. 3. **Set `PARALLEL_LEVEL`** if RAM is constrained — see [references/build_and_test.md](references/build_and_test.md). The default `$(nproc)` can OOM mid-build because CUDA compilation needs ~4–8 GB per job.