cuda_rust_wasm/backend/
mod.rs

1//! Backend abstraction layer
2
3pub mod backend_trait;
4pub mod native_gpu;
5pub mod webgpu;
6pub mod webgpu_optimized;
7pub mod wasm_runtime;
8
9pub use backend_trait::{BackendTrait, BackendCapabilities};
10
11// Re-export BackendTrait as Backend for backward compatibility
12pub use backend_trait::BackendTrait as Backend;
13
14/// Get the current backend implementation
15pub fn get_backend() -> Box<dyn Backend> {
16    #[cfg(target_arch = "wasm32")]
17    {
18        Box::new(webgpu::WebGPUBackend::new())
19    }
20    
21    #[cfg(not(target_arch = "wasm32"))]
22    {
23        #[cfg(feature = "cuda-backend")]
24        {
25            if native_gpu::is_cuda_available() {
26                return Box::new(native_gpu::NativeGPUBackend::new());
27            }
28        }
29        
30        // Fallback to CPU backend
31        Box::new(wasm_runtime::WasmRuntime::new())
32    }
33}