Add Windows ARM64 CUDA plugin package and align CUDA metadata/artifact naming - #28896
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates ONNX Runtime’s CUDA Plugin EP build/packaging infrastructure to add Windows ARM64 support, including ARM64-aware CI stages and NuGet packaging, plus several build-system fixes needed for CUDA 13.x toolchains on Windows-on-ARM.
Changes:
- Add Windows ARM64 to the CUDA plugin CI build and Python wheel production, including ARM64-specific CUDA/cuDNN download logic.
- Extend CUDA plugin packaging to include win-arm64 artifacts in Foundry Local zip creation and the multi-RID NuGet package.
- Update CMake/CUDA build plumbing for Windows ARM64 (cuDNN lookup,
/bigobjforwarding under nvcc, FindCUDAToolkit workaround, CUB include workaround).
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/ci_build/github/azure-pipelines/stages/plugin-win-cuda-stage.yml | Parameterize Windows CUDA plugin build by arch and add win-arm64 download/build pathing. |
| tools/ci_build/github/azure-pipelines/stages/plugin-cuda-packaging-stage.yml | Add win-arm64 build option, split CUDA arch lists, and include win-arm64 in zip packaging. |
| tools/ci_build/github/azure-pipelines/stages/plugin-cuda-nuget-packaging-stage.yml | Include win-arm64 artifacts in NuGet packaging orchestration. |
| tools/ci_build/github/azure-pipelines/plugin-cuda-pipeline.yml | Enable ARM64 builds by default and introduce “13.x” CUDA version labeling/translation. |
| plugin-ep-cuda/csharp/README.md | Document win-arm64 runtime layout and RID requirements. |
| plugin-ep-cuda/csharp/pack_nuget.py | Add win-arm64 RID mapping for staging native binaries. |
| plugin-ep-cuda/csharp/Microsoft.ML.OnnxRuntime.EP.Cuda/Microsoft.ML.OnnxRuntime.EP.Cuda.csproj | Pack win-arm64 native runtime assets into the NuGet. |
| onnxruntime/core/providers/cuda/cu_inc/cub.cuh | Work around MSVC SAL __out macro conflicts by pre-including CCCL PTX headers. |
| cmake/onnxruntime_python.cmake | Make Windows cuDNN DLL discovery arch-aware for CUDA 13.x. |
| cmake/onnxruntime_providers_cuda.cmake | Adjust /bigobj forwarding under nvcc and avoid duplication. |
| cmake/onnxruntime_providers_cuda_plugin.cmake | Adjust /bigobj forwarding under nvcc for the CUDA plugin target. |
| cmake/onnxruntime_common.cmake | Avoid passing raw /bigobj to nvcc on ARM64 by excluding CUDA sources from the global option. |
| cmake/external/onnxruntime_external_deps.cmake | Work around FindCUDAToolkit search-suffix behavior on Windows ARM64 hosts. |
| cmake/external/cuDNN.cmake | Ensure cuDNN import libs are selected from the correct arch subdirectory on Windows. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Copilot
AI
changed the title
Add windows arm64 cuda plugin package
Add Windows ARM64 CUDA plugin package and align CUDA metadata/artifact naming
Jun 8, 2026
tianleiwu
marked this pull request as ready for review
June 8, 2026 21:55
edgchen1
reviewed
Jun 29, 2026
edgchen1
reviewed
Jun 29, 2026
edgchen1
reviewed
Jun 29, 2026
edgchen1
reviewed
Jun 29, 2026
edgchen1
reviewed
Jun 29, 2026
tianleiwu
force-pushed
the
tlwu/20260608/win_arm64_cuda_plugin_package
branch
from
July 15, 2026 05:45
6b6a0c1 to
1d1f024
Compare
baijumeswani
previously approved these changes
Jul 15, 2026
tianleiwu
force-pushed
the
tlwu/20260608/win_arm64_cuda_plugin_package
branch
from
July 16, 2026 22:10
ecca35c to
fd9ce1a
Compare
baijumeswani
approved these changes
Jul 16, 2026
tianleiwu
enabled auto-merge (squash)
July 16, 2026 23:37
This was referenced Jul 17, 2026
tianleiwu
added a commit
that referenced
this pull request
Jul 18, 2026
This cherry-picks the following commits for the release: | Commit ID | PR Number | Commit Title | |-----------|-----------|-------------| | dd32f35 | #29590 | Fix libcudart.so.13 hard dependency in pybind module breaking import on CPU-only Linux | | cc44a4d | #29706 | [CUDA] Fix XQA GroupQueryAttention cudaErrorInvalidValue on Blackwell (sm_120) | | 23a7e9d | #29705 | [CUDA] Do not link nvrtc | | ee93f83 | #29711 | [CUDA] Update cuda arch list for packages of cuda 12.8 | | fea45a3 | #29620 | [CUDA] Add cuDNN-free ArgMax/ArgMin/ReduceSum and fix LogSoftmax on plugin EP | | f05b218 | #29624 | Enable Spectre-mitigated MSVC libs for BinSkim builds | | 1c89b86 | #29687 | [BUILD] CUDA_QUANT_PREPROCESS off by default and Adjust CI | | 41bd391 | #29658 | [CUDA] Fix null allocator passed to plugin EP kernel PrePack | | 405fbea | #28896 | Add Windows ARM64 CUDA plugin package and align CUDA metadata/artifact naming | | 308f24c | #29622 | Enable fpA_intB GEMM in CUDA builds and add configurable options | | 16ebc1d | #29731 | [Build] Use GPU pool to unblock CI temporarily | |5911a3a263| #29748 | Add OrtErrorCode::ORT_DEVICE_RESET | |6217f73ec5 | #29663 | Fix plugin EP allocator deleter lifetime | --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: GitHub Copilot <copilot@example.com> Co-authored-by: Edward Chen <18449977+edgchen1@users.noreply.github.com> Co-authored-by: Yen-Shi Wang <yenshiw@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds Windows ARM64 support to CUDA plugin packaging and updates related build/packaging logic for correctness and consistency across architectures.
In response to review feedback, it also:
Motivation and Context
Windows ARM64 CUDA plugin packaging requires architecture-aware handling for toolkit/cuDNN discovery and artifact metadata.
These updates prevent cross-architecture ambiguity (especially for CUDA 13.x win-arm64 vs x64), improve downstream artifact selection reliability, and keep metadata semantics consistent with produced artifacts.