Skip to content

Commit 908861c

Browse files
Revert CUDA 12 SOCP install path
1 parent 225b70e commit 908861c

3 files changed

Lines changed: 10 additions & 10 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ source $HOME/.local/bin/env # (sh, bash, zsh)
9595
# source $HOME/.local/bin/env.fish # (fish)
9696

9797
# Install with CUDA-specific dependencies
98-
uv sync --extra cuda12 # required for the cuOpt SOCP/QCQP preview until CUDA 13 26.8 wheels are published
98+
uv sync --extra cuda13 # this container image has cuda13
9999

100100
# Optional: Install development tools
101-
uv sync --extra cuda12 --extra dev
101+
uv sync --extra cuda13 --extra dev
102102

103103
# Create a Jupyter kernel for this environment
104104
uv run python -m ipykernel install --user --name=portfolio-opt --display-name "Portfolio Optimization"
@@ -107,13 +107,13 @@ uv run python -m ipykernel install --user --name=portfolio-opt --display-name "P
107107
uv run jupyter lab --no-browser --NotebookApp.token=''
108108
```
109109

110-
**Note:** The SOCP/QCQP demo currently needs the `cuda12` extra because the CUDA 13 cuML/cuOpt 26.8 wheels are not published yet. The `cuda13` extra remains available for non-SOCP GPU workflows on the latest published CUDA 13 cuML/cuOpt packages. The `uv sync` command automatically creates a virtual environment and installs all dependencies from `uv.lock`.
110+
**Note:** If you use a different container image than the suggested one above, during uv sync, please use the `--extra cuda12` or `--extra cuda13` flag to install the GPU packages (cuOpt, cuML) matching your container's CUDA version. The `uv sync` command automatically creates a virtual environment and installs all dependencies from `uv.lock`.
111111

112112
**Tip:** To check your CUDA version, run `nvidia-smi` and look for "CUDA Version" in the output.
113113

114114
**Important Notes:**
115115
- If you encounter "No space left on device" errors, set `UV_CACHE_DIR` to an alternate cache location: `export UV_CACHE_DIR=/path/to/cache/directory`
116-
- The `cuda12` and `cuda13` extras are mutually exclusive; use `cuda12` for the SOCP/QCQP preview until CUDA 13 26.8 wheels are published
116+
- The `cuda12` and `cuda13` extras are mutually exclusive - install only one based on your system's CUDA version
117117
- If you plan to run the Streamlit demo from this container, include `-p 8501:8501` when starting Docker. Docker port mappings cannot be added to an already-running container; restart the container with the port published if it was omitted.
118118

119119
#### Using the Jupyter Kernel

demo/README_streamlit.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Use `uv` for the current cuFOLIO dependency set:
2121

2222
```bash
2323
# From the repository root
24-
uv sync --extra cuda12 # required for SOCP/QCQP preview today
24+
uv sync --extra cuda13 # or: uv sync --extra cuda12
2525
uv pip install -r demo/requirements.txt
2626
uv run python -c 'from cufolio.utils import download_data; download_data("data/stock_data", datasets=["sp500"])'
2727
uv run streamlit run demo/rebalancing_streamlit_app.py --server.address 0.0.0.0 --server.port 8501
@@ -32,7 +32,7 @@ For a standard virtual environment:
3232
```bash
3333
python3 -m venv .venv
3434
source .venv/bin/activate
35-
pip install -e ".[cuda12]" # required for SOCP/QCQP preview today
35+
pip install -e ".[cuda13]" # or .[cuda12], or plain -e . for CPU-only setup
3636
pip install -r demo/requirements.txt
3737
python -c 'from cufolio.utils import download_data; download_data("data/stock_data", datasets=["sp500"])'
3838
streamlit run demo/rebalancing_streamlit_app.py --server.address 0.0.0.0 --server.port 8501
@@ -45,7 +45,7 @@ Open `http://localhost:8501` for local runs. On a remote GPU instance, forward o
4545
- Python 3.11+
4646
- Streamlit, Plotly, and Squarify from `demo/requirements.txt`
4747
- CVXPY and cuFOLIO core dependencies from `pyproject.toml`
48-
- Optional: NVIDIA GPU + `cuda12` extra for the cuOpt SOCP/QCQP preview; `cuda13` uses the latest published CUDA 13 packages but does not carry the 26.8 SOCP package line yet
48+
- Optional: NVIDIA GPU + CUDA with the matching `cuda12` or `cuda13` extra for cuOpt acceleration
4949

5050
## Troubleshooting
5151

@@ -57,4 +57,4 @@ Open `http://localhost:8501` for local runs. On a remote GPU instance, forward o
5757
uv run python -c 'from cufolio.utils import download_data; download_data("data/stock_data", datasets=["sp500"])'
5858
```
5959

60-
**GPU Solver Unavailable**: The UI can still boot without a GPU, but the full GTC comparison and SOCP preview need cuOpt. Install the `cuda12` extra for the SOCP/QCQP preview and run on an NVIDIA GPU instance.
60+
**GPU Solver Unavailable**: The UI can still boot without a GPU, but the full GTC comparison and SOCP preview need cuOpt. Install the matching CUDA extra and run on an NVIDIA GPU instance.

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ cuda12 = [
2525
"cuopt-cu12==26.8.*",
2626
]
2727
cuda13 = [
28-
"cuml-cu13==26.4.*",
29-
"cuopt-cu13==26.4.*",
28+
"cuml-cu13==26.8.*",
29+
"cuopt-cu13==26.8.*",
3030
]
3131

3232
[tool.ruff]

0 commit comments

Comments
 (0)