LegNeato/rust-gpu-chimera

Demo project showing a single Rust codebase running on CPU and directly on GPUs

Rust

497

21 commits

updated Apr 4, 2026

See the code

README

Rust GPU Chimera Demo

A cross-platform demo of a single Rust codebase running on both the CPU and GPU via CUDA, Vulkan, Metal, and DirectX. There are no shader or kernel languages used, only Rust.

Supported Configurations

PlatformRust FeaturesHostBackendDriverHow it WorksStatus
Linux-CPU--Rust → Native✅ Working
LinuxwgpuwgpuVulkanNativeRust → SPIR-V✅ Working
LinuxashashVulkanNativeRust → SPIR-V✅ Working
LinuxcudacustCUDANativeRust → NVVM → PTX✅ Working
macOS-CPU--Rust → Native✅ Working
macOSwgpuwgpuMetalMetalRust → SPIR-V → MSL✅ Working
macOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V✅ Working
macOSwgpu,vulkanwgpuVulkanSwiftShaderRust → SPIR-V✅ Working
macOSashashVulkanMoltenVKRust → SPIR-V✅ Working
macOSashashVulkanSwiftShaderRust → SPIR-V✅ Working
macOScudacustCUDA--❌ Unavailable1
Windows-CPU--Rust → Native✅ Working
WindowswgpuwgpuDX12NativeRust → SPIR-V → HLSL✅ Working
Windowswgpu,vulkanwgpuVulkanNativeRust → SPIR-V✅ Working
Windowswgpu,vulkanwgpuVulkanSwiftShaderRust → SPIR-V✅ Working
WindowsashashVulkanNativeRust → SPIR-V✅ Working
WindowsashashVulkanSwiftShaderRust → SPIR-V✅ Working
WindowscudacustCUDANativeRust → NVVM → PTX✅ Working
Android-CPU--Rust → Native✅ Working
AndroidwgpuwgpuVulkanNativeRust → SPIR-V✅ Working
AndroidashashVulkanNativeRust → SPIR-V✅ Working
AndroidcudacustCUDA--❌ Unavailable2
iOS-CPU--Rust → Native✅ Working
iOSwgpuwgpuMetalMetalRust → SPIR-V → MSL🔷 Should work
iOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V🔷 Should work
iOSashashVulkanMoltenVKRust → SPIR-V🔷 Should work
iOScudacustCUDA--❌ Unavailable1
tvOS-CPU--Rust → Native✅ Working
tvOSwgpuwgpuMetalMetalRust → SPIR-V → MSL🔷 Should work
tvOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V🔷 Should work
tvOSashashVulkanMoltenVKRust → SPIR-V🔷 Should work
tvOScudacustCUDA--❌ Unavailable1
visionOS-CPU--Rust → Native✅ Working
visionOSwgpuwgpuMetalMetalRust → SPIR-V → MSL🔷 Should work
visionOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V🔷 Should work
visionOSashashVulkanMoltenVKRust → SPIR-V🔷 Should work
visionOScudacustCUDA--❌ Unavailable1

Running the Demo

The demo runs a bitonic sort on various data types (u32, i32, f32) with different sizes and configurations.

Linux

# CPU execution
cargo run --release

# Vulkan via wgpu
cargo run --release --features wgpu

# Vulkan via ash
cargo run --release --features ash

# CUDA (NVIDIA GPU required)
cargo run --release --features cuda

macOS

# CPU execution
cargo run --release

# Metal via wgpu (SPIR-V → MSL translation)
cargo run --release --features wgpu

# Vulkan via wgpu (requires MoltenVK)
cargo run --release --features wgpu,vulkan

# Vulkan via ash (requires MoltenVK)
cargo run --release --features ash

Windows

# CPU execution
cargo run --release

# DirectX 12 via wgpu (SPIR-V → HLSL translation)
cargo run --release --features wgpu

# Vulkan via wgpu
cargo run --release --features wgpu,vulkan

# Vulkan via ash
cargo run --release --features ash

# CUDA (NVIDIA GPU required)
cargo run --release --features cuda

Instead of cargo run you can replace it with cargo test to run unit tests for the same configuration.

Project Structure

rust-gpu-chimera-demo/
├── kernel/           # Compute kernel logic and entrypoints
│   └── src/
│       └── lib.rs
├── shared/           # Code that runs on both the CPU and GPU
│   └── src/
│       └── lib.rs
├── src/
│   ├── runners/      # Code that runs on the CPU/host and interfaces with the GPU
│   │   ├── cpu.rs
│   │   ├── cuda.rs
│   │   ├── wgpu.rs
│   │   └── ash.rs
│   ├── lib.rs
│   └── main.rs       # Demo application binary
└── build.rs          # Kernel compilation orchestration

Footnotes

  1. CUDA is not supported on macOS/iOS/tvOS/visionOS.
    ZLUDA could potentially enable CUDA on these platforms in the future. 2 3 4

  2. CUDA is not supported on Android.
    ZLUDA could potentially enable CUDA on Android in the future.

cuda
gpu
rust
rust-cuda
rust-gpu
vulkan

Contributors

LegNeato

20 commits

Firestar99

1 commits

LegNeato/rust-gpu-chimera

Demo project showing a single Rust codebase running on CPU and directly on GPUs

Rust

497

21 commits

updated Apr 4, 2026

See the code

README

Rust GPU Chimera Demo

A cross-platform demo of a single Rust codebase running on both the CPU and GPU via CUDA, Vulkan, Metal, and DirectX. There are no shader or kernel languages used, only Rust.

Supported Configurations

PlatformRust FeaturesHostBackendDriverHow it WorksStatus
Linux-CPU--Rust → Native✅ Working
LinuxwgpuwgpuVulkanNativeRust → SPIR-V✅ Working
LinuxashashVulkanNativeRust → SPIR-V✅ Working
LinuxcudacustCUDANativeRust → NVVM → PTX✅ Working
macOS-CPU--Rust → Native✅ Working
macOSwgpuwgpuMetalMetalRust → SPIR-V → MSL✅ Working
macOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V✅ Working
macOSwgpu,vulkanwgpuVulkanSwiftShaderRust → SPIR-V✅ Working
macOSashashVulkanMoltenVKRust → SPIR-V✅ Working
macOSashashVulkanSwiftShaderRust → SPIR-V✅ Working
macOScudacustCUDA--❌ Unavailable1
Windows-CPU--Rust → Native✅ Working
WindowswgpuwgpuDX12NativeRust → SPIR-V → HLSL✅ Working
Windowswgpu,vulkanwgpuVulkanNativeRust → SPIR-V✅ Working
Windowswgpu,vulkanwgpuVulkanSwiftShaderRust → SPIR-V✅ Working
WindowsashashVulkanNativeRust → SPIR-V✅ Working
WindowsashashVulkanSwiftShaderRust → SPIR-V✅ Working
WindowscudacustCUDANativeRust → NVVM → PTX✅ Working
Android-CPU--Rust → Native✅ Working
AndroidwgpuwgpuVulkanNativeRust → SPIR-V✅ Working
AndroidashashVulkanNativeRust → SPIR-V✅ Working
AndroidcudacustCUDA--❌ Unavailable2
iOS-CPU--Rust → Native✅ Working
iOSwgpuwgpuMetalMetalRust → SPIR-V → MSL🔷 Should work
iOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V🔷 Should work
iOSashashVulkanMoltenVKRust → SPIR-V🔷 Should work
iOScudacustCUDA--❌ Unavailable1
tvOS-CPU--Rust → Native✅ Working
tvOSwgpuwgpuMetalMetalRust → SPIR-V → MSL🔷 Should work
tvOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V🔷 Should work
tvOSashashVulkanMoltenVKRust → SPIR-V🔷 Should work
tvOScudacustCUDA--❌ Unavailable1
visionOS-CPU--Rust → Native✅ Working
visionOSwgpuwgpuMetalMetalRust → SPIR-V → MSL🔷 Should work
visionOSwgpu,vulkanwgpuVulkanMoltenVKRust → SPIR-V🔷 Should work
visionOSashashVulkanMoltenVKRust → SPIR-V🔷 Should work
visionOScudacustCUDA--❌ Unavailable1

Running the Demo

The demo runs a bitonic sort on various data types (u32, i32, f32) with different sizes and configurations.

Linux

# CPU execution
cargo run --release

# Vulkan via wgpu
cargo run --release --features wgpu

# Vulkan via ash
cargo run --release --features ash

# CUDA (NVIDIA GPU required)
cargo run --release --features cuda

macOS

# CPU execution
cargo run --release

# Metal via wgpu (SPIR-V → MSL translation)
cargo run --release --features wgpu

# Vulkan via wgpu (requires MoltenVK)
cargo run --release --features wgpu,vulkan

# Vulkan via ash (requires MoltenVK)
cargo run --release --features ash

Windows

# CPU execution
cargo run --release

# DirectX 12 via wgpu (SPIR-V → HLSL translation)
cargo run --release --features wgpu

# Vulkan via wgpu
cargo run --release --features wgpu,vulkan

# Vulkan via ash
cargo run --release --features ash

# CUDA (NVIDIA GPU required)
cargo run --release --features cuda

Instead of cargo run you can replace it with cargo test to run unit tests for the same configuration.

Project Structure

rust-gpu-chimera-demo/
├── kernel/           # Compute kernel logic and entrypoints
│   └── src/
│       └── lib.rs
├── shared/           # Code that runs on both the CPU and GPU
│   └── src/
│       └── lib.rs
├── src/
│   ├── runners/      # Code that runs on the CPU/host and interfaces with the GPU
│   │   ├── cpu.rs
│   │   ├── cuda.rs
│   │   ├── wgpu.rs
│   │   └── ash.rs
│   ├── lib.rs
│   └── main.rs       # Demo application binary
└── build.rs          # Kernel compilation orchestration

Footnotes

  1. CUDA is not supported on macOS/iOS/tvOS/visionOS.
    ZLUDA could potentially enable CUDA on these platforms in the future. 2 3 4

  2. CUDA is not supported on Android.
    ZLUDA could potentially enable CUDA on Android in the future.

cuda
gpu
rust
rust-cuda
rust-gpu
vulkan

Contributors

LegNeato

20 commits

Firestar99

1 commits

Languages

Rust

82.6%

Shell

17.4%