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.
| Platform | Rust Features | Host | Backend | Driver | How it Works | Status | 
|---|---|---|---|---|---|---|
| Linux | - | CPU | - | - | Rust → Native | ✅ Working | 
| Linux | wgpu | wgpu | Vulkan | Native | Rust → SPIR-V | ✅ Working | 
| Linux | ash | ash | Vulkan | Native | Rust → SPIR-V | ✅ Working | 
| Linux | cuda | cust | CUDA | Native | Rust → NVVM → PTX | ✅ Working | 
| macOS | - | CPU | - | - | Rust → Native | ✅ Working | 
| macOS | wgpu | wgpu | Metal | Metal | Rust → SPIR-V → MSL | ✅ Working | 
| macOS | wgpu,vulkan | wgpu | Vulkan | MoltenVK | Rust → SPIR-V | ✅ Working | 
| macOS | wgpu,vulkan | wgpu | Vulkan | SwiftShader | Rust → SPIR-V | ✅ Working | 
| macOS | ash | ash | Vulkan | MoltenVK | Rust → SPIR-V | ✅ Working | 
| macOS | ash | ash | Vulkan | SwiftShader | Rust → SPIR-V | ✅ Working | 
| macOS | cuda | cust | CUDA | - | - | ❌ Unavailable1 | 
| Windows | - | CPU | - | - | Rust → Native | ✅ Working | 
| Windows | wgpu | wgpu | DX12 | Native | Rust → SPIR-V → HLSL | ✅ Working | 
| Windows | wgpu,vulkan | wgpu | Vulkan | Native | Rust → SPIR-V | ✅ Working | 
| Windows | wgpu,vulkan | wgpu | Vulkan | SwiftShader | Rust → SPIR-V | ✅ Working | 
| Windows | ash | ash | Vulkan | Native | Rust → SPIR-V | ✅ Working | 
| Windows | ash | ash | Vulkan | SwiftShader | Rust → SPIR-V | ✅ Working | 
| Windows | cuda | cust | CUDA | Native | Rust → NVVM → PTX | ✅ Working | 
| Android | - | CPU | - | - | Rust → Native | ✅ Working | 
| Android | wgpu | wgpu | Vulkan | Native | Rust → SPIR-V | ✅ Working | 
| Android | ash | ash | Vulkan | Native | Rust → SPIR-V | ✅ Working | 
| Android | cuda | cust | CUDA | - | - | ❌ Unavailable2 | 
| iOS | - | CPU | - | - | Rust → Native | ✅ Working | 
| iOS | wgpu | wgpu | Metal | Metal | Rust → SPIR-V → MSL | 🔷 Should work | 
| iOS | wgpu,vulkan | wgpu | Vulkan | MoltenVK | Rust → SPIR-V | 🔷 Should work | 
| iOS | ash | ash | Vulkan | MoltenVK | Rust → SPIR-V | 🔷 Should work | 
| iOS | cuda | cust | CUDA | - | - | ❌ Unavailable1 | 
| tvOS | - | CPU | - | - | Rust → Native | ✅ Working | 
| tvOS | wgpu | wgpu | Metal | Metal | Rust → SPIR-V → MSL | 🔷 Should work | 
| tvOS | wgpu,vulkan | wgpu | Vulkan | MoltenVK | Rust → SPIR-V | 🔷 Should work | 
| tvOS | ash | ash | Vulkan | MoltenVK | Rust → SPIR-V | 🔷 Should work | 
| tvOS | cuda | cust | CUDA | - | - | ❌ Unavailable1 | 
| visionOS | - | CPU | - | - | Rust → Native | ✅ Working | 
| visionOS | wgpu | wgpu | Metal | Metal | Rust → SPIR-V → MSL | 🔷 Should work | 
| visionOS | wgpu,vulkan | wgpu | Vulkan | MoltenVK | Rust → SPIR-V | 🔷 Should work | 
| visionOS | ash | ash | Vulkan | MoltenVK | Rust → SPIR-V | 🔷 Should work | 
| visionOS | cuda | cust | CUDA | - | - | ❌ Unavailable1 | 
The demo runs a bitonic sort on various data types (u32, i32, f32) with different sizes and configurations.
# 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# 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# 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 cudaInstead of cargo run you can replace it with cargo test to run unit tests for the
same configuration.
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