← Back

Module device

enum DeviceType

Source: device.joule:19

struct DeviceId

Source: device.joule:32

fn cpu() -> Self

Source: device.joule:38

fn cuda(index: u32) -> Self

Source: device.joule:42

fn metal() -> Self

Source: device.joule:46

fn coreml() -> Self

Source: device.joule:50

struct DeviceProperties

Source: device.joule:61

struct DeviceFeatures

Source: device.joule:99

fn theoretical_efficiency(&self) -> f64

Compute theoretical efficiency (FLOP/J)

Source: device.joule:115

fn ridge_point(&self) -> f64

Compute arithmetic intensity for roofline (FLOP/byte)

Source: device.joule:120

struct DeviceState

Source: device.joule:131

enum ThrottleReason

Source: device.joule:163

fn now() -> Self

Create new state with current values

Source: device.joule:174

struct Device

Handle to a compute device with monitoring capabilities

Source: device.joule:197

fn new(id: DeviceId) -> Result<Arc<Self>, DeviceError>

Create device handle

Source: device.joule:232

fn id(&self) -> &DeviceId

Get device identifier

Source: device.joule:261

fn properties(&self) -> &DeviceProperties

Get device properties

Source: device.joule:266

fn state(&self) -> DeviceState

Get current state

Source: device.joule:271

fn energy_tracker(&self) -> Arc<EnergyTracker>

Get energy tracker

Source: device.joule:276

fn update_state(&self)

Update device state (called by monitor)

Source: device.joule:281

fn current_power(&self) -> Watts

Get current power draw

Source: device.joule:310

fn current_temperature(&self) -> f32

Get current temperature

Source: device.joule:315

fn memory_info(&self) -> (u64, u64)

Get memory info

Source: device.joule:320

fn is_throttled(&self) -> bool

Check if device is throttled

Source: device.joule:326

fn set_power_limit(&self, limit: Watts) -> Result<(), DeviceError>

Set power limit

Source: device.joule:331

fn power_limit(&self) -> Option<Watts>

Get power limit

Source: device.joule:354

fn set_temp_limit(&self, limit: f32)

Set temperature limit for throttling

Source: device.joule:359

fn energy_since(&self, start: Instant) -> Joules

Calculate energy consumed over time period

Source: device.joule:364

fn avg_power_since(&self, start: Instant) -> Watts

Get average power over time period

Source: device.joule:380

fn peak_power_since(&self, start: Instant) -> Watts

Get peak power over time period

Source: device.joule:396

fn efficiency(&self) -> DeviceEfficiency

Get efficiency metrics

Source: device.joule:407

fn synchronize(&self) -> Result<(), DeviceError>

Synchronize device (wait for all operations)

Source: device.joule:428

fn reset(&self) -> Result<(), DeviceError>

Reset device

Source: device.joule:439

fn drop(&mut self)

Source: device.joule:450

struct DeviceEfficiency

Source: device.joule:459

struct DeviceManager

Global device manager

Source: device.joule:475

fn new() -> Self

Create new device manager

Source: device.joule:494

fn init(&self) -> Result<(), DeviceError>

Initialize and enumerate all devices

Source: device.joule:511

fn start_monitoring(&self, interval: Duration)

Start background monitoring

Source: device.joule:557

fn stop_monitoring(&self)

Stop monitoring

Source: device.joule:575

fn get(&self, id: &DeviceId) -> Option<Arc<Device>>

Get device by ID

Source: device.joule:583

fn default(&self) -> Arc<Device>

Get default device

Source: device.joule:588

fn set_default(&self, id: DeviceId) -> Result<(), DeviceError>

Set default device

Source: device.joule:594

fn all(&self) -> Vec<Arc<Device>>

Get all devices

Source: device.joule:604

fn of_type(&self, device_type: DeviceType) -> Vec<Arc<Device>>

Get devices of specific type

Source: device.joule:609

fn select_for_workload(&self, workload: &WorkloadProfile) -> Arc<Device>

Select best device for workload

Source: device.joule:618

fn score_device_for_workload(&self, device: &Device, workload: &WorkloadProfile) -> f64

Source: device.joule:636

fn total_power(&self) -> Watts

Get total power consumption across all devices

Source: device.joule:671

fn total_energy(&self) -> Joules

Get total energy consumed since start

Source: device.joule:681

fn default() -> Self

Source: device.joule:692

struct WorkloadProfile

Source: device.joule:699

fn from_model_params(

Estimate from model parameters

Source: device.joule:714

fn device_manager() -> &'static DeviceManager

Get global device manager

Source: device.joule:746

fn default_device() -> Arc<Device>

Get default device

Source: device.joule:751

fn get_device(id: &DeviceId) -> Option<Arc<Device>>

Get device by ID

Source: device.joule:756

fn query_device_properties(id: &DeviceId) -> Result<DeviceProperties, DeviceError>

Source: device.joule:764

fn query_device_state(id: &DeviceId) -> Result<DeviceState, DeviceError>

Source: device.joule:774

fn init_device_backend(id: &DeviceId) -> Result<*mut std::ffi::c_void, DeviceError>

Source: device.joule:783

fn cleanup_device_backend(id: &DeviceId, handle: *mut std::ffi::c_void)

Source: device.joule:791

fn cpu_properties() -> DeviceProperties

Source: device.joule:800

fn cpu_state() -> DeviceState

Source: device.joule:831

fn cuda_properties(index: u32) -> Result<DeviceProperties, DeviceError>

Source: device.joule:849

fn cuda_state(index: u32) -> Result<DeviceState, DeviceError>

Source: device.joule:887

fn cuda_init(_index: u32) -> Result<*mut std::ffi::c_void, DeviceError>

Source: device.joule:898

fn cuda_cleanup(_handle: *mut std::ffi::c_void)

Source: device.joule:909

fn cuda_synchronize(_index: u32) -> Result<(), DeviceError>

Source: device.joule:916

fn cuda_reset(_index: u32) -> Result<(), DeviceError>

Source: device.joule:927

fn set_nvidia_power_limit(_index: u32, _limit: Watts) -> Result<(), DeviceError>

Source: device.joule:938

fn metal_properties() -> Result<DeviceProperties, DeviceError>

Source: device.joule:950

fn metal_state() -> Result<DeviceState, DeviceError>

Source: device.joule:987

fn metal_init() -> Result<*mut std::ffi::c_void, DeviceError>

Source: device.joule:997

fn metal_cleanup(_handle: *mut std::ffi::c_void)

Source: device.joule:1007

fn metal_synchronize() -> Result<(), DeviceError>

Source: device.joule:1009

fn coreml_properties() -> Result<DeviceProperties, DeviceError>

Source: device.joule:1020

fn set_amd_power_limit(_index: u32, _limit: Watts) -> Result<(), DeviceError>

Source: device.joule:1058

fn rocm_synchronize(_index: u32) -> Result<(), DeviceError>

Source: device.joule:1062

fn rocm_reset(_index: u32) -> Result<(), DeviceError>

Source: device.joule:1066

fn get_cuda_device_count() -> Result<u32, DeviceError>

Source: device.joule:1071

enum DeviceError

Source: device.joule:1081

fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result

Source: device.joule:1091

fn from(w: f64) -> Self

Source: device.joule:1107