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; }