Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ci/scripts/tests/test_filter_cuda_matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ class TestPublishedSets(unittest.TestCase):
"""

def test_published_cuda_versions(self):
self.assertEqual(FILTER.SUPPORTED_CUDA_VERSIONS, ["cu130", "cu132", "cu134"])
self.assertEqual(FILTER.SUPPORTED_CUDA_VERSIONS, ["cu132", "cu134"])

def test_published_cuda_versions_are_documented(self):
# The install table on the getting started page is the only place a user is told
Expand Down
14 changes: 9 additions & 5 deletions .github/scripts/filter_cuda_matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@
# ExecuTorch wheel for the same CUDA version, and a missing version means that consumer has
# nothing to depend on:
#
# cu130 the floor, the generator's stable choice, and the default for accelerator consumers
# cu132 a current TensorRT build target
# cu132 the floor, the generator's stable choice, the default for accelerator consumers,
# and a current TensorRT build target
# cu134 the newest, which consumers building against the latest CUDA need
#
# Skip wholly absent trains so an upstream removal cannot block the remaining releases.
Expand All @@ -59,11 +59,15 @@
# builds. A machine on CUDA 12.6 can still build from source, where the pinned torch comes
# from a channel that carries 12.6.
#
# cu130 is not published. PyTorch keeps it on its nightly builds only as a temporary hold for
# other projects, and its release-candidate builds do not carry it, so a release would have
# no cu130 train even while nightlies do.
#
# cu132 is included because omitting it would leave a published consumer row with no
# ExecuTorch wheel to pair with. It is executable on a device one minor behind, since CUDA
# minor versions are compatible, so a cu132 wheel has been run end to end on a CUDA 13.0
# device. The packaging properties are checked on every row regardless.
SUPPORTED_CUDA_VERSIONS: List[str] = ["cu130", "cu132", "cu134"]
SUPPORTED_CUDA_VERSIONS: List[str] = ["cu132", "cu134"]

# Python versions to publish, stated rather than derived for the same reason the CUDA
# versions are. Deriving them from the rows that survived the filter made the release
Expand All @@ -73,15 +77,15 @@
SUPPORTED_PYTHON_VERSIONS: List[str] = ["3.10", "3.11", "3.12", "3.13", "3.14"]

# The single row built for a pull request. A full matrix on every push would cost hours for
# little signal, and cu130 is the version with a machine on hand that can run a model on it.
# little signal, and cu132 is the version with a machine on hand that can run a model on it.
#
# The python is not a free choice. When a pull request is limited, the shared generator replaces
# the offered python list with its first entry, so that entry is the only python any row can
# carry. Naming a different one here matched no offered row: the tiebreaker below never fired and
# the pull request silently built whichever python the generator had left, so the constant
# described a row that was never built.
PR_PYTHON_VERSION: str = SUPPORTED_PYTHON_VERSIONS[0]
PR_CUDA_VERSION: str = "cu130"
PR_CUDA_VERSION: str = "cu132"

# Jetson devices are their own row: a JetPack image, one Python version, and one CUDA
# version. Kept empty on purpose today, so no Jetson row is emitted.
Expand Down
8 changes: 4 additions & 4 deletions docs/source/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ pip install executorch torch \
| Machine you export on | Variant |
| --- | --- |
| CPU only | `cpu` |
| NVIDIA GPU, CUDA 13.0 | `cu130` |
| NVIDIA GPU, CUDA 13.2 | `cu132` |
| NVIDIA GPU, CUDA 13.4 | `cu134` |

The CUDA packages are built for Linux, on x86_64 and ARM64. Use the `cpu`
variant on macOS and on Windows. If your CUDA version is not in the table,
choose the closest lower one with the same major version, because CUDA works
across minor versions but not across major ones. There is no package for CUDA
12, so on CUDA 12 use the `cpu` variant or build from source.
across minor versions but not across major ones. There is no package for CUDA 12,
so on CUDA 12 use the `cpu` variant or build from source. On CUDA 13.0 or 13.1 no
lower variant exists, so use `cu132`.

To get a change that has landed on the `main` branch but is not in a release
yet, use a nightly build. These are rebuilt every day. Put `nightly/` in front
of the variant name, for example `nightly/cu130`, and add `--pre` to the
of the variant name, for example `nightly/cu132`, and add `--pre` to the
command, otherwise pip skips development versions. Nightly builds cover the same
variants. CUDA 13.4 is the newest, and until the next release it is in nightly
builds only.
Expand Down
6 changes: 3 additions & 3 deletions docs/source/using-executorch-cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -370,12 +370,12 @@ last of the two settings decides the tag for every entry in the link.

### Running on a GPU with the CUDA package

The CUDA build is a separate package. Releases cover CUDA 13.0, 13.2 and 13.4, so pick the index
matching the CUDA version you have (`cu130`, `cu132` or `cu134`). For CUDA 13.0:
The CUDA build is a separate package. Releases cover CUDA 13.2 and 13.4, so pick the index
matching the CUDA version you have (`cu132` or `cu134`). For CUDA 13.2:

```
pip install executorch torch \
--index-url https://download.pytorch.org/whl/cu130 \
--index-url https://download.pytorch.org/whl/cu132 \
--extra-index-url https://pypi.org/simple
```

Expand Down
Loading