pub use super::memory_ops::{GpuBuffer, GpuMemoryManager};
#[cfg(feature = "cuda")]
pub use super::memory_ops::cuda::CudaOperations;
#[cfg(feature = "metal")]
pub use super::memory_ops::metal::MetalOperations;
#[cfg(feature = "opencl")]
pub use super::memory_ops::opencl::OpenCLOperations;
pub use super::memory_ops::cpu_fallback::CpuFallback;
#[cfg(test)]
mod tests {
use super::*;
use crate::tensor::Tensor;
#[test]
fn test_legacy_cpu_transfer() {
let tensor = Tensor::<f32>::ones(&[2, 3]);
let device = super::super::DeviceType::Cpu;
let buffer = GpuMemoryManager::to_device(&tensor, &device).unwrap();
let restored = GpuMemoryManager::to_cpu(&buffer, &[2, 3]).unwrap();
assert_eq!(tensor.shape(), restored.shape());
assert_eq!(tensor.data, restored.data);
}
#[test]
fn test_legacy_non_contiguous_tensor() {
let tensor = Tensor::<f32>::from_vec(vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0], vec![2, 3]);
let transposed = tensor.transpose().unwrap();
let device = super::super::DeviceType::Cpu;
let buffer = GpuMemoryManager::to_device(&transposed, &device).unwrap();
let restored = GpuMemoryManager::to_cpu(&buffer, transposed.shape()).unwrap();
assert_eq!(transposed.shape(), restored.shape());
}
#[test]
fn test_legacy_memory_manager() {
let manager = GpuMemoryManager::<f32>::new();
let _default_manager = GpuMemoryManager::<f32>::default();
}
}