Skip to main content

oxirs_vec/gpu/
mod.rs

1//! GPU acceleration abstractions for vector operations
2//!
3//! This module provides GPU acceleration abstractions for:
4//! - Distance calculations (cosine, euclidean, etc.)
5//! - Batch vector operations
6//! - Parallel search algorithms
7//! - Matrix operations for embeddings
8//!
9//! # Pure Rust Policy (COOLJAPAN Pure Rust Policy v2)
10//!
11//! This module is **100% Pure Rust**: all buffers, devices, streams and kernels
12//! here are CPU-backed reference implementations with no C FFI. Real NVIDIA CUDA
13//! acceleration (`cuda-runtime-sys`) is quarantined in the companion
14//! `oxirs-vec-adapter-cuda` crate (publish = false), which depends on this crate
15//! and reuses these public types. This keeps oxirs-vec's published
16//! `--all-features` surface free of `cuda-runtime-sys`.
17
18pub mod accelerator;
19pub mod buffer;
20pub mod config;
21pub mod device;
22pub mod index;
23pub mod index_builder;
24pub mod index_builder_phases;
25#[cfg(test)]
26mod index_builder_tests;
27pub mod index_builder_types;
28pub mod kernels;
29pub mod load_balancer;
30pub mod memory_pool;
31pub mod multi_gpu;
32pub mod performance;
33pub mod runtime;
34pub mod types;
35
36// Re-export key types for convenience
37pub use accelerator::{
38    create_default_accelerator, create_memory_optimized_accelerator,
39    create_performance_accelerator, is_gpu_available, GpuAccelerator,
40};
41pub use buffer::GpuBuffer;
42pub use config::{GpuConfig, OptimizationLevel, PrecisionMode};
43pub use device::GpuDevice;
44pub use index::{AdvancedGpuVectorIndex, BatchVectorProcessor, GpuVectorIndex};
45pub use index_builder::{
46    BatchSizeCalculator, ComputedBatch, GpuBatchDistanceComputer, GpuDistanceMetric,
47    GpuHnswIndexBuilder, GpuIndexBuildStats, GpuIndexBuilderConfig, GpuIndexOptimizer,
48    GpuMemoryBudget, HnswGraph, HnswNode, IncrementalGpuIndexBuilder, IndexedBatch,
49    PipelinedIndexBuilder, PreparedBatch,
50};
51pub use kernels::*;
52pub use load_balancer::{GpuLoadBalancer, SimpleGpuDevice, WorkloadChunk, WorkloadDistributor};
53pub use memory_pool::GpuMemoryPool;
54pub use multi_gpu::{
55    GpuDeviceMetrics, GpuTaskOutput, GpuTaskResult, LoadBalancingStrategy, MultiGpuConfig,
56    MultiGpuConfigFactory, MultiGpuManager, MultiGpuStats, MultiGpuTask, TaskPriority,
57};
58pub use performance::GpuPerformanceStats;
59pub use types::GpuExecutionConfig;