pub struct MultiGpuManager { /* private fields */ }Expand description
Central multi-GPU manager
Manages a pool of GPU workers and dispatches tasks using the configured load balancing strategy.
Implementations§
Source§impl MultiGpuManager
impl MultiGpuManager
Sourcepub fn new(config: MultiGpuConfig) -> Result<Self>
pub fn new(config: MultiGpuConfig) -> Result<Self>
Create a new multi-GPU manager
Initializes workers for each device ID from 0 to num_devices-1.
Sourcepub fn dispatch(&self, task: MultiGpuTask) -> Result<u64>
pub fn dispatch(&self, task: MultiGpuTask) -> Result<u64>
Dispatch a task to the most appropriate GPU device
Sourcepub fn execute_pending(&self) -> Vec<GpuTaskResult>
pub fn execute_pending(&self) -> Vec<GpuTaskResult>
Execute all pending tasks on all devices and collect results
Sourcepub fn execute_sync(&self, task: MultiGpuTask) -> Result<GpuTaskResult>
pub fn execute_sync(&self, task: MultiGpuTask) -> Result<GpuTaskResult>
Dispatch and immediately execute a task, returning the result
Sourcepub fn get_stats(&self) -> MultiGpuStats
pub fn get_stats(&self) -> MultiGpuStats
Get aggregate statistics for all devices
Sourcepub fn get_device_metrics(&self) -> Vec<GpuDeviceMetrics>
pub fn get_device_metrics(&self) -> Vec<GpuDeviceMetrics>
Get per-device metrics
Sourcepub fn num_devices(&self) -> usize
pub fn num_devices(&self) -> usize
Get the number of active GPU devices
Sourcepub fn all_healthy(&self) -> bool
pub fn all_healthy(&self) -> bool
Check if all devices are healthy (not overloaded)
Sourcepub fn least_utilized_device(&self) -> Option<i32>
pub fn least_utilized_device(&self) -> Option<i32>
Get the least utilized device ID
Sourcepub fn next_task_id(&self) -> u64
pub fn next_task_id(&self) -> u64
Generate a unique task ID
Sourcepub fn set_strategy(&self, strategy: LoadBalancingStrategy)
pub fn set_strategy(&self, strategy: LoadBalancingStrategy)
Set the load balancing strategy at runtime
Sourcepub fn reset_stats(&self)
pub fn reset_stats(&self)
Reset statistics
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MultiGpuManager
impl !RefUnwindSafe for MultiGpuManager
impl Send for MultiGpuManager
impl Sync for MultiGpuManager
impl Unpin for MultiGpuManager
impl UnsafeUnpin for MultiGpuManager
impl !UnwindSafe for MultiGpuManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.