Skip to content

Add Windows ARM64 CUDA plugin package and align CUDA metadata/artifact naming - #28896

Merged
tianleiwu merged 4 commits into
mainfrom
tlwu/20260608/win_arm64_cuda_plugin_package
Jul 17, 2026
Merged

Add Windows ARM64 CUDA plugin package and align CUDA metadata/artifact naming#28896
tianleiwu merged 4 commits into
mainfrom
tlwu/20260608/win_arm64_cuda_plugin_package

Conversation

@tianleiwu

@tianleiwu tianleiwu commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

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:

  • Corrects CMake comments to match actual Windows ARM64 CUDA toolkit search behavior.
  • Prioritizes architecture-specific cuDNN DLL search paths before generic fallback paths.
  • Aligns Windows ARM64 Python artifact naming with the ARM64 CUDA toolkit version.
  • Extends packaging metadata with per-platform CUDA version fields (including win-arm64) and updates metadata-reading template validation/exports accordingly.

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.

@tianleiwu
tianleiwu marked this pull request as draft June 8, 2026 06:38
@microsoft microsoft deleted a comment from azure-pipelines Bot Jun 8, 2026
@tianleiwu
tianleiwu requested a review from Copilot June 8, 2026 21:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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, /bigobj forwarding 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.

Comment thread cmake/external/onnxruntime_external_deps.cmake Outdated
Comment thread cmake/onnxruntime_python.cmake Outdated
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
tianleiwu marked this pull request as ready for review June 8, 2026 21:55
Comment thread cmake/onnxruntime_providers_cuda_plugin.cmake Outdated
Comment thread cmake/external/cuDNN.cmake Outdated
Comment thread onnxruntime/core/providers/cuda/cu_inc/cub.cuh
Comment thread tools/ci_build/github/azure-pipelines/plugin-cuda-pipeline.yml Outdated
Comment thread tools/ci_build/github/azure-pipelines/plugin-cuda-pipeline.yml Outdated
@tianleiwu
tianleiwu force-pushed the tlwu/20260608/win_arm64_cuda_plugin_package branch from 6b6a0c1 to 1d1f024 Compare July 15, 2026 05:45
baijumeswani
baijumeswani previously approved these changes Jul 15, 2026
@tianleiwu
tianleiwu force-pushed the tlwu/20260608/win_arm64_cuda_plugin_package branch from ecca35c to fd9ce1a Compare July 16, 2026 22:10
@tianleiwu
tianleiwu requested a review from baijumeswani July 16, 2026 22:11
@tianleiwu
tianleiwu enabled auto-merge (squash) July 16, 2026 23:37
@tianleiwu
tianleiwu merged commit 405fbea into main Jul 17, 2026
88 of 91 checks passed
@tianleiwu
tianleiwu deleted the tlwu/20260608/win_arm64_cuda_plugin_package branch July 17, 2026 01:11
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants