HardwareAbstractionLayer

Trait HardwareAbstractionLayer 

Source
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§

Source

fn initialize(&mut self) -> FFTResult<()>

Initialize the accelerator

Source

fn is_available(&self) -> bool

Check if the accelerator is available

Source

fn get_info(&self) -> &AcceleratorInfo

Get accelerator information

Source

fn allocate_memory(&mut self, size: usize) -> FFTResult<u64>

Allocate memory on the accelerator

Source

fn free_memory(&mut self, handle: u64) -> FFTResult<()>

Free memory on the accelerator

Source

fn transfer_to_device(&mut self, handle: u64, data: &[u8]) -> FFTResult<()>

Transfer data to accelerator

Source

fn transfer_from_device( &mut self, handle: u64, data: &mut [u8], ) -> FFTResult<()>

Transfer data from accelerator

Source

fn execute_sparse_fft( &mut self, _input_handle: u64, _output_handle: u64, config: &SparseFFTConfig, ) -> FFTResult<Duration>

Execute sparse FFT on accelerator

Source

fn get_performance_metrics(&self) -> HashMap<String, f64>

Get performance metrics

Source

fn shutdown(&mut self) -> FFTResult<()>

Shutdown the accelerator

Implementors§