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