Skip to main content

oxirs_vec/gpu/
mod.rs

1//! GPU acceleration for vector operations using CUDA
2//!
3//! This module provides GPU acceleration for:
4//! - Distance calculations (cosine, euclidean, etc.)
5//! - Batch vector operations
6//! - Parallel search algorithms
7//! - Matrix operations for embeddings
8//!
9//! # CUDA Feature Gating (Pure Rust Policy)
10//!
11//! GPU acceleration is **optional** and properly feature-gated:
12//! - **Default build**: 100% Pure Rust, no CUDA required, CPU implementations only
13//! - **With `cuda` feature**: GPU acceleration when CUDA toolkit is installed
14//! - **With `cuda` feature but no toolkit**: Graceful fallback to CPU implementations
15//!
16//! All CUDA-dependent code is gated with `#[cfg(all(feature = "cuda", cuda_runtime_available))]`
17//! to ensure the crate builds successfully regardless of CUDA availability.
18
19pub mod accelerator;
20pub mod buffer;
21pub mod config;
22pub mod device;
23pub mod index;
24pub mod index_builder;
25pub mod kernels;
26pub mod load_balancer;
27pub mod memory_pool;
28pub mod multi_gpu;
29pub mod performance;
30pub mod runtime;
31pub mod types;
32
33// Re-export key types for convenience
34pub use accelerator::{
35    create_default_accelerator, create_memory_optimized_accelerator,
36    create_performance_accelerator, is_gpu_available, GpuAccelerator,
37};
38pub use buffer::GpuBuffer;
39pub use config::{GpuConfig, OptimizationLevel, PrecisionMode};
40pub use device::GpuDevice;
41pub use index::{AdvancedGpuVectorIndex, BatchVectorProcessor, GpuVectorIndex};
42pub use index_builder::{
43    BatchSizeCalculator, ComputedBatch, GpuBatchDistanceComputer, GpuDistanceMetric,
44    GpuHnswIndexBuilder, GpuIndexBuildStats, GpuIndexBuilderConfig, GpuIndexOptimizer,
45    GpuMemoryBudget, HnswGraph, HnswNode, IncrementalGpuIndexBuilder, IndexedBatch,
46    PipelinedIndexBuilder, PreparedBatch,
47};
48pub use kernels::*;
49pub use load_balancer::{GpuLoadBalancer, SimpleGpuDevice, WorkloadChunk, WorkloadDistributor};
50pub use memory_pool::GpuMemoryPool;
51pub use multi_gpu::{
52    GpuDeviceMetrics, GpuTaskOutput, GpuTaskResult, LoadBalancingStrategy, MultiGpuConfig,
53    MultiGpuConfigFactory, MultiGpuManager, MultiGpuStats, MultiGpuTask, TaskPriority,
54};
55pub use performance::GpuPerformanceStats;
56pub use types::GpuExecutionConfig;