1#![warn(missing_docs)]
42#![warn(clippy::all)]
43#![allow(clippy::module_name_repetitions)]
44
45pub mod aligned;
50pub mod bandwidth_profiler;
51pub mod buffer_view;
52pub mod compression;
53pub mod copy;
54pub mod copy_2d3d;
55pub mod device_buffer;
56pub mod host_buffer;
57pub mod host_registered;
58pub mod managed_hints;
59pub mod memory_info;
60pub mod numa;
61pub mod peer_copy;
62#[cfg(feature = "pool")]
63pub mod pool;
64pub mod pool_pressure;
65pub mod pool_stats;
66pub mod unified;
67pub mod virtual_memory;
68pub mod zero_copy;
69
70pub use bandwidth_profiler::{
75 BandwidthBenchmarkConfig, BandwidthMeasurement, BandwidthProfiler, BandwidthSummary,
76 DirectionSummary, TransferDirection, bandwidth_utilization, describe_bandwidth,
77 estimate_transfer_time, format_bytes, theoretical_peak_bandwidth,
78};
79pub use buffer_view::{BufferView, BufferViewMut};
80pub use compression::{
81 CompressedDeviceBuffer, CompressionPlan, CompressionSupport, CompressionType,
82 DEFAULT_COMPRESSION_GRANULARITY,
83};
84pub use copy_2d3d::{Memcpy2DParams, Memcpy3DParams};
85pub use device_buffer::{DeviceBuffer, DeviceSlice};
86pub use host_buffer::PinnedBuffer;
87pub use host_registered::{
88 RegisterFlags, RegisteredMemory, RegisteredMemoryType, RegisteredPointerInfo,
89 query_registered_pointer_info, register, register_slice, register_vec,
90};
91pub use managed_hints::{ManagedMemoryHints, MigrationPolicy, PrefetchPlan};
92pub use memory_info::{MemAdvice, MemoryInfo, mem_advise, mem_prefetch, memory_info};
93pub use numa::{
94 LOCAL_NUMA_DISTANCE, NumaAllocTracker, NumaBuffer, NumaTopology, closest_node_to_gpu,
95};
96pub use pool_pressure::{
97 MemoryPressureMonitor, PressureLevel, PressureSample, validate_thresholds,
98};
99pub use unified::UnifiedBuffer;
100pub use virtual_memory::{
101 AccessFlags, PhysicalAllocation, VirtualAddressRange, VirtualMemoryManager,
102};
103pub use zero_copy::MappedBuffer;
104
105pub use aligned::{
106 AlignedBuffer, Alignment, AlignmentInfo, check_alignment, coalesce_alignment,
107 optimal_alignment_for_type, round_up_to_alignment, validate_alignment,
108};
109
110pub use pool_stats::{AllocationHistogram, FragmentationMetrics, PoolReport, PoolStatsTracker};
111
112#[cfg(feature = "pool")]
113pub use pool::{MemoryPool, PoolStats, PooledBuffer};
114
115pub mod prelude {
125 pub use crate::aligned::{AlignedBuffer, Alignment, AlignmentInfo};
126 pub use crate::buffer_view::{BufferView, BufferViewMut};
127 pub use crate::compression::{CompressedDeviceBuffer, CompressionSupport, CompressionType};
128 pub use crate::copy::{
129 copy_dtod, copy_dtod_async, copy_dtoh, copy_dtoh_async_raw, copy_dtoh_region_async,
130 copy_htod, copy_htod_async_raw, copy_htod_region_async,
131 };
132 pub use crate::copy_2d3d::{
133 Memcpy2DParams, Memcpy3DParams, copy_2d_dtod, copy_2d_dtoh, copy_2d_htod, copy_3d_dtod,
134 };
135 pub use crate::device_buffer::{DeviceBuffer, DeviceSlice};
136 pub use crate::host_buffer::PinnedBuffer;
137 pub use crate::host_registered::{
138 RegisterFlags, RegisteredMemory, RegisteredMemoryType, RegisteredPointerInfo,
139 query_registered_pointer_info, register, register_slice, register_vec,
140 };
141 pub use crate::managed_hints::{ManagedMemoryHints, MigrationPolicy, PrefetchPlan};
142 pub use crate::memory_info::{MemAdvice, MemoryInfo, mem_advise, mem_prefetch, memory_info};
143 pub use crate::numa::{NumaAllocTracker, NumaBuffer, NumaTopology};
144 pub use crate::pool_pressure::{MemoryPressureMonitor, PressureLevel};
145 pub use crate::unified::UnifiedBuffer;
146 pub use crate::virtual_memory::{AccessFlags, VirtualAddressRange, VirtualMemoryManager};
147}
148
149pub mod features {
155 pub const HAS_POOL: bool = cfg!(feature = "pool");
157
158 pub const HAS_GPU_TESTS: bool = cfg!(feature = "gpu-tests");
160}