Skip to content

Publish CUDA wheels so a GPU user does not build from source - #21569

Open
shoumikhin wants to merge 16 commits into
gh/shoumikhin/83/headfrom
gh/shoumikhin/86/head
Open

Publish CUDA wheels so a GPU user does not build from source#21569
shoumikhin wants to merge 16 commits into
gh/shoumikhin/83/headfrom
gh/shoumikhin/86/head

Conversation

@shoumikhin

@shoumikhin shoumikhin commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Right now pip install executorch always gives you a CPU-only wheel.
The CUDA delegate is built and tested from source, but no published wheel contains it, so anyone
who wants GPU support has to clone the repository and build.

This turns on the GPU wheel rows so a plain install can bring the delegate with it:

pip install executorch                              # CPU, unchanged
pip install executorch --index-url <cuda index>     # CUDA delegate included

Two things make those wheels correct rather than merely present

The GPU generations to compile for. Without being told, the build compiles device code only
for the GPU in the build machine. The wheel then installs fine on every machine the row claims
and fails when a model actually runs on a different generation, which looks like a model bug
rather than a packaging one. Each row now names its architectures explicitly:

x86_64  CUDA 13    A100, H100, B200, RTX 50 series
aarch64 CUDA 13    Grace-Hopper, GB200, and JetPack 7 devices
        CUDA 12.6  Jetson Orin

The CUDA libraries the wheel needs. The delegate links the CUDA runtime but does not bundle
it, so the wheel now declares those libraries as dependencies and one install brings what it
needs. The build variant is read from the release environment rather than guessed from whether a
CUDA compiler happens to be installed, because a CPU wheel built on a machine that has one must
not declare them.

Tested

Built a GPU wheel for each supported CUDA version on Linux x86_64 and on two Jetson devices,
then confirmed the built wheel carries device code for every architecture its row claims and
declares the matching CUDA packages. A CPU wheel is unchanged: no architectures named, no CUDA
dependencies declared.

[ghstack-poisoned]
@pytorch-bot

pytorch-bot Bot commented Aug 4, 2026

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/21569

Note: Links to docs will display an error until the docs builds have been completed.

❌ 16 New Failures, 340 Pending, 40 Unrelated Failures, 31 Unclassified Failures

As of commit fc8b4e3 with merge base ad3a71f (image):

NEW FAILURES - The following jobs have failed:

  • nightly / link-check / lint-urls (gh)
  • nightly / link-check / lint-xrefs (gh)
  • pull / test-arm-backend-public-api-backward-compatibility / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID BB40:36EB96:22373D:72DF79:6A72698F and timestamp 2026-08-04 22:37:03 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • pull / test-multimodal-linux (gemma3-4b) / linux-job (gh)
    RuntimeError: Command docker exec -t c568a3c984a26103fa65c31f0f7bb7ecb4eaa76897fe7caa4c1bc87ac336821c /exec failed with exit code 1
  • pull / unittest / linux / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID E6F4:2426C5:8E624A:1DCA704:6A72698C and timestamp 2026-08-04 22:37:01 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • pull / unittest-buck / linux / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID DFC8:7F1D:90F75E:1E7F749:6A7269AD and timestamp 2026-08-04 22:37:33 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • pull / unittest-editable / linux / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID BD40:26DEAF:212E95:6F3FFC:6A72698F and timestamp 2026-08-04 22:37:03 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • trunk / test-arm-backend-ethos-u (test_ootb_tests_ethos_u) / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID 9470:36EB96:205E79:6CA20C:6A726932 and timestamp 2026-08-04 22:35:30 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • trunk / test-arm-backend-ethos-u (test_pytest_ops_ethos_u55) / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID E1B0:349A77:1EE6465:670CCBA:6A726931 and timestamp 2026-08-04 22:35:30 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • trunk / test-arm-backend-ethos-u (test_run_ethos_u85) / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID CD8A:2BD68D:8A8168:1D27FF6:6A726935 and timestamp 2026-08-04 22:35:33 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • trunk / test-arm-backend-vkml (test_ootb_tests_vgf) / linux-job (gh)
    ##[error]An error occurred trying to start process '/usr/bin/bash' with working directory '/home/ec2-user/actions-runner/_work/executorch/executorch/pytorch/executorch'. No such file or directory
  • trunk / test-arm-backend-vkml (test_smaller_stories_llama_vkml) / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID A6FA:22DC42:23D9FA:7566BC:6A726968 and timestamp 2026-08-04 22:36:24 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • trunk / test-cortex-m-e2e / run (mv3, cortex-m7) / mv3-cortex-m7 (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID 8DAC:33EC7A:8C3DE7:1D8AAF1:6A7269A9 and timestamp 2026-08-04 22:37:30 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • trunk / test-huggingface-transformers-xnnpack (qwen3-0.6b|xnnpack|--quantize) / linux-job (gh)
    ##[error]An error occurred trying to start process '/usr/bin/bash' with working directory '/home/ec2-user/actions-runner/_work/executorch/executorch/pytorch/executorch'. No such file or directory
  • trunk / unittest-release / linux / linux-job (gh)
    ##[error]API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID 8298:2B17BF:2063FAC:6BFAA6E:6A726974 and timestamp 2026-08-04 22:36:36 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) - https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api#rate-limiting
  • trunk / unittest-release / windows / windows-job (gh)
    Error: Input required and not supplied: path

UNCLASSIFIED FAILURES - DrCI could not classify the following jobs because the workflow did not run on the merge base. The failures may be pre-existing on trunk or introduced by this PR:

FLAKY - The following jobs failed but were likely due to flakiness present on trunk:

BROKEN TRUNK - The following jobs failed but were present on the merge base:

👉 Rebase onto the `viable/strict` branch to avoid these failures

This comment was automatically generated by Dr. CI and updates every 15 minutes.

[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/binaries/all Release PRs with this label will build wheels for all python versions ciflow/binaries ciflow/cuda ciflow/nightly ciflow/trunk CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant