Repository navigation
Closed
Labels
build-relatedBuild scripts, toolchain discovery, or compilation setupBuild scripts, toolchain discovery, or compilation setupcuda-oxideSIMT programming model: rustc backend, cargo oxide, cuda-device, cuda-host, bookSIMT programming model: rustc backend, cargo oxide, cuda-device, cuda-host, bookenhancementNew feature or requestNew feature or requestplatform-supportOS / target platform support (Windows, macOS, non-Linux toolchains)OS / target platform support (Windows, macOS, non-Linux toolchains)windowsWindows (x86_64-pc-windows-msvc) platform and toolchain supportWindows (x86_64-pc-windows-msvc) platform and toolchain support
Description
Hi! I have been working on a Windows-support fork of cuda-oxide here:
https://github.com/ansidium/cuda-oxide-windows
The fork keeps the Linux path upstream-compatible while adding an experimental native Windows MSVC path. The first signed Windows release is published here:
https://github.com/ansidium/cuda-oxide-windows/releases/tag/windows-v0.2.0
Current Windows scope:
- Target:
x86_64-pc-windows-msvc. - Windows GNU is intentionally out of scope.
- Windows CI canary on
windows-latestwithout a live GPU. - Side-by-side
cargo-oxide.exe+rustc_codegen_cuda.dllrelease layout. - CUDA Toolkit / NVVM / nvJitLink discovery improvements for Windows paths.
- Windows smoke script and documentation.
I do not want to open one large PR that mixes fork branding, release packaging, CI, docs, and portability fixes. If you are open to upstreaming any of this, I can split the work into smaller PRs, for example:
- Cross-platform path and dynamic-library naming helpers.
- CUDA Toolkit / NVVM / nvJitLink discovery improvements.
- Windows-safe
cargo oxidecommand/path handling. - Windows CI no-GPU compile canary.
- Windows setup docs.
Would any of these be useful upstream? If so, which order and scope would you prefer?
Reacted by Yehor Smoliakov, mxmind and Jack Patterson
Metadata
Metadata
Assignees
Labels
build-relatedBuild scripts, toolchain discovery, or compilation setupBuild scripts, toolchain discovery, or compilation setupcuda-oxideSIMT programming model: rustc backend, cargo oxide, cuda-device, cuda-host, bookSIMT programming model: rustc backend, cargo oxide, cuda-device, cuda-host, bookenhancementNew feature or requestNew feature or requestplatform-supportOS / target platform support (Windows, macOS, non-Linux toolchains)OS / target platform support (Windows, macOS, non-Linux toolchains)windowsWindows (x86_64-pc-windows-msvc) platform and toolchain supportWindows (x86_64-pc-windows-msvc) platform and toolchain support
Activity
egorsmkv commentedon Jun 9, 2026
Thanks really needed, subscribed to your repo
nihalpasham commentedon Jun 18, 2026
Thanks for the detailed write-up, and for keeping the fork close to upstream.
Just so that I don't set the wrong expectations: we have not decided whether we can support Windows, and we may not be able to. The questions below are only to understand what supporting it would actually cost, before we commit either way.
ansidium commentedon Jun 18, 2026
Thanks, that makes sense.
Quick update: I rebased the Windows fork onto current
upstream/main(56b843f) and used that sync as a real canary. It exposed a few rebase conflicts plus oneDeviceBuffercompile fallout from the recent async-free changes; those are fixed now.cargo-oxide, testsoxide-artifacts, runscargo oxide setup, and compile-checksvecaddwithcargo oxide build vecadd --arch sm_75. Latest run is green: https://github.com/ansidium/cuda-oxide-windows/actions/runs/27791763718DeviceBufferrepair and general platform-path cleanup are Linux-neutral; the MSVC backend packaging,ffi.libdiscovery, and Windows CI setup are Windows-only. I can split any upstreamable work that way if helpful.No new Windows release is needed right now, since upstream's latest release is still
v0.2.1; the current fork release remainswindows-v0.2.1.uurl commentedon Aug 23, 2026
I opened #1173 as a narrow follow-up to this issue.
Since #330 already addressed the cargo-oxide backend target-directory and host dylib-path handling, #1173 is limited to making runtime discovery in
libnvvm-sysandnvjitlink-sysplatform-aware.It preserves the existing Linux discovery behavior and adds Windows/MSVC CUDA Toolkit DLL candidates with deterministic tests for the discovery logic.
It intentionally does not include COFF support, cargo-oxide Windows command handling, codegen backend changes, Windows CI, packaging, or claim full Windows support.
I kept it separate so the library-discovery change can be reviewed independently from the broader Windows-support decision.
ansidium commentedon Aug 24, 2026
Thanks @uurl. I reviewed #1173 and the closure feedback.
To make ownership explicit: I can maintain the Windows/MSVC runtime-discovery code and its hosted Windows CI if this scope is accepted upstream. This includes keeping the lane green as
mainchanges and submitting fixes for Windows regressions.The implementation now uses one shared discovery component for
libnvvm-sysandnvjitlink-sys. It preserves the Linux discovery order, enumerates installed Windows Toolkit roots without a release table, compares Toolkit and DLL versions numerically, matches Windows DLL names case-insensitively, and verifies the exact loaded file.The mandatory
windows-latestlane installs CUDA, runs the shared discovery tests, loads libNVVM and nvJitLink from fingerprintable files, builds the backend, and materializes avecaddcubin without a GPU:ansidium@c930cd3f
https://github.com/ansidium/cuda-oxide-windows/actions/runs/32730586257
Would this be sufficient for a fresh minimal PR from current main?
fix: use zero padding for read-only tile-like loads (NVIDIA#139)
ansidium commentedon Oct 6, 2026
The fork is now ansidium/cuda-rust-windows. It is synced through upstream
a0cc6cc, including the monorepo layout and shared host crates.Windows CI for
x86_64-pc-windows-msvcruns automatically on pushes tomainand pull requests targetingmain. It tests CUDA library discovery and loading, builds the codegen backend, and materializes avecaddcubin. The latest Windows run passed, and all nine workflows passed onf3738d887.Scripted GPU tests run on demand on a local RTX 4080, outside hosted CI. Checks passed with Rust 1.99.0 and CUDA 13.4.2, including reference-validity kernels with and without debug assertions.
I can maintain the shared discovery code and hosted Windows CI lane.
feat(cuda-oxide): add Windows x86_64 MSVC support (NVIDIA#1770)