Skip to content

Fix Windows binary utility discovery on Arm64 - #2586

Open
isVoid wants to merge 7 commits into
NVIDIA:mainfrom
isVoid:agent/fix-woa-binary-utility-layouts
Open

Fix Windows binary utility discovery on Arm64#2586
isVoid wants to merge 7 commits into
NVIDIA:mainfrom
isVoid:agent/fix-woa-binary-utility-layouts

Conversation

@isVoid

@isVoid isVoid commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

What changed

  • Prefer the CTK bin/compute-sanitizer.bat launcher, with compute-sanitizer/compute-sanitizer.exe as the compatibility fallback.
  • Resolve standalone Nsight Systems nsys to the native machine target only: target-windows-x64/nsys.exe on x64 or target-windows-armv8/nsys.exe on Arm64. There is no cross-architecture fallback.
  • Prefer the standalone Nsight Compute ncu.bat launcher, then fall back to the native machine binary: target/windows-desktop-win7-x64/ncu.exe on x64 or target/windows-desktop-win10-t23x-a64/ncu.exe on Arm64.
  • Detect the Windows machine architecture independently of the Python interpreter architecture.
  • Preserve literal lookup for the existing nsight-sys and nsight-compute GUI launcher names; they are not aliases for the nsys and ncu CLIs.
  • Document the WoA architecture contract: dynamic and static libraries target the Python interpreter architecture, while architecture-specific executable selection targets the native machine architecture.

Binary layout survey

Group Delivery and layout Pathfinder change
Unchanged CTK core utilities nvcc, nvdisasm, cuobjdump, nvprune, fatbinary, bin2c, and nvlink remain at bin/<utility>.exe in both CUDA 13.3 x64 and CUDA 13.4 x64/Arm64. The installed executable architecture changes with the CTK installer, but the path does not. None; the existing CTK bin search remains unchanged.
Unchanged CTK GUI launchers nsight-sys.exe and nsight-compute.exe remain under bin. They launch the Nsight Systems and Nsight Compute GUIs and are distinct from the nsys and ncu CLIs. None; preserve literal-name lookup through wheel, Conda, CTK, and canary search stages.
Changed CTK utility Compute Sanitizer exposes bin/compute-sanitizer.bat, which launches compute-sanitizer/compute-sanitizer.exe. Prefer the launcher and retain the direct executable fallback.
Changed standalone utility The standalone Nsight Systems product tree is outside the CTK root. Its CLI has no product-root launcher and is stored under architecture targets target-windows-x64 and target-windows-armv8. Read the installed-product root and select only the native machine target for an explicit nsys request.
Changed standalone utility The standalone Nsight Compute product tree is outside the CTK root. Its product root provides ncu.bat, with direct executables under architecture-specific target directories. Prefer the launcher and retain a native direct-binary fallback for an explicit ncu request.

The existing IS_WINDOWS macro is intentionally unchanged.

Backward compatibility

  • CUDA 13.3 remains supported on Windows x64 through the unchanged core-tool paths and the x64 Nsight direct-binary paths.
  • CUDA 13.3 is not treated as a Windows Arm64 installation; Windows Arm64 support starts with CUDA 13.4.
  • Existing wheel and Conda search locations retain their priority before system-product discovery.
  • nsight-sys and nsight-compute continue to resolve their literal GUI launchers instead of being rewritten to the CLI names.

Testing

  • pixi run --manifest-path cuda_pathfinder -e cu13 test: 1305 passed, 4 skipped.
  • Focused tests cover wheel/Conda priority, registry-to-native-target composition, terminal Nsight misses, and the Compute Sanitizer canary path.
  • Scoped pre-commit checks, Ruff formatting/lint, and mypy-pathfinder: passed.
  • pixi run --manifest-path cuda_pathfinder -e docs build-docs: passed with Sphinx warnings treated as errors.

@isVoid isVoid added this to the cuda.pathfinder next milestone Aug 10, 2026
@isVoid isVoid added bug Something isn't working cuda.pathfinder Everything related to the cuda.pathfinder module labels Aug 10, 2026
@copy-pr-bot

copy-pr-bot Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@isVoid
isVoid marked this pull request as ready for review August 10, 2026 07:11
@isVoid

isVoid commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test daf96fb

@isVoid isVoid self-assigned this Aug 10, 2026
@github-actions

Copy link
Copy Markdown

@isVoid isVoid added the PR review get-together Mark PRs you'd like the team to review at the weekly PR review get-together. label Aug 10, 2026
@isVoid
isVoid requested a review from rwgk August 10, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working cuda.pathfinder Everything related to the cuda.pathfinder module PR review get-together Mark PRs you'd like the team to review at the weekly PR review get-together.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant