pub trait HardwareAbstractionLayer: Send + Sync {
// Required methods
fn initialize(&mut self) -> FFTResult<()>;
fn is_available(&self) -> bool;
fn get_info(&self) -> &AcceleratorInfo;
fn allocate_memory(&mut self, size: usize) -> FFTResult<u64>;
fn free_memory(&mut self, handle: u64) -> FFTResult<()>;
fn transfer_to_device(&mut self, handle: u64, data: &[u8]) -> FFTResult<()>;
fn transfer_from_device(
&mut self,
handle: u64,
data: &mut [u8],
) -> FFTResult<()>;
fn execute_sparse_fft(
&mut self,
_input_handle: u64,
_output_handle: u64,
config: &SparseFFTConfig,
) -> FFTResult<Duration>;
fn get_performance_metrics(&self) -> HashMap<String, f64>;
fn shutdown(&mut self) -> FFTResult<()>;
}
Expand description
Hardware abstraction layer trait for specialized accelerators
Required Methods§
Sourcefn initialize(&mut self) -> FFTResult<()>
fn initialize(&mut self) -> FFTResult<()>
Initialize the accelerator
Sourcefn is_available(&self) -> bool
fn is_available(&self) -> bool
Check if the accelerator is available
Sourcefn get_info(&self) -> &AcceleratorInfo
fn get_info(&self) -> &AcceleratorInfo
Get accelerator information
Sourcefn allocate_memory(&mut self, size: usize) -> FFTResult<u64>
fn allocate_memory(&mut self, size: usize) -> FFTResult<u64>
Allocate memory on the accelerator
Sourcefn free_memory(&mut self, handle: u64) -> FFTResult<()>
fn free_memory(&mut self, handle: u64) -> FFTResult<()>
Free memory on the accelerator
Sourcefn transfer_to_device(&mut self, handle: u64, data: &[u8]) -> FFTResult<()>
fn transfer_to_device(&mut self, handle: u64, data: &[u8]) -> FFTResult<()>
Transfer data to accelerator
Sourcefn transfer_from_device(
&mut self,
handle: u64,
data: &mut [u8],
) -> FFTResult<()>
fn transfer_from_device( &mut self, handle: u64, data: &mut [u8], ) -> FFTResult<()>
Transfer data from accelerator
Sourcefn execute_sparse_fft(
&mut self,
_input_handle: u64,
_output_handle: u64,
config: &SparseFFTConfig,
) -> FFTResult<Duration>
fn execute_sparse_fft( &mut self, _input_handle: u64, _output_handle: u64, config: &SparseFFTConfig, ) -> FFTResult<Duration>
Execute sparse FFT on accelerator
Sourcefn get_performance_metrics(&self) -> HashMap<String, f64>
fn get_performance_metrics(&self) -> HashMap<String, f64>
Get performance metrics