1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
//! Provides a representation for a collection of available compute units e.g. CPUs or GPUs.
//!
//! Hardware can be GPUs, multi-core CPUs or DSPs, Cell/B.E. processor or whatever else
//! is supported by the provided frameworks such as OpenCL, CUDA, etc. The struct holds all
//! important information about the hardware.
//! To execute code on hardware, turn hardware into a [device][device].
//!
//! [device]: ../device/index.html
#[derive(Debug, Copy, Clone, PartialEq, Hash)]
/// Specifies the available Hardware types.
pub enum HardwareType {
/// CPU devices
CPU,
/// GPU devices
GPU,
/// Hardware Accelerator devices
ACCELERATOR,
/// Used for anything else
OTHER,
}
/// Specifies Hardware behavior accross frameworks.
pub trait IHardware {
/// Returns the ID of the Hardware
fn id(&self) -> isize;
/// Returns the name of the Hardware
fn name(&self) -> Option<String>;
/// Defines the name of the Hardware
fn set_name(&mut self, name: Option<String>) -> Self;
/// Returns the device_type of the Hardware
fn hardware_type(&self) -> Option<HardwareType>;
/// Defines the hardware_type of the Hardware
fn set_hardware_type(&mut self, hardware_type: Option<HardwareType>) -> Self;
/// Returns the compute_units of the Hardware
fn compute_units(&self) -> Option<isize>;
/// Defines the compute_units of the Hardware
fn set_compute_units(&mut self, compute_units: Option<isize>) -> Self;
/// Build an inmutable Hardware
fn build(self) -> Self;
}