pub struct MultiGpuCoordinator {
config: MultiGpuConfig,
devices: RwLock<Vec<DeviceInfo>>,
kernel_device_map: RwLock<HashMap<KernelId, usize>>,
device_kernel_counts: RwLock<Vec<AtomicUsize>>,
round_robin_counter: AtomicUsize,
total_kernels: AtomicU64,
custom_selector: RwLock<Option<Arc<dyn Fn(&[DeviceStatus], &LaunchOptions) -> usize + Send + Sync>>>,
}Expand description
Multi-GPU coordinator for managing kernels across devices.
Fields§
§config: MultiGpuConfigConfiguration.
devices: RwLock<Vec<DeviceInfo>>Available devices.
kernel_device_map: RwLock<HashMap<KernelId, usize>>Kernel-to-device mapping.
device_kernel_counts: RwLock<Vec<AtomicUsize>>Device kernel counts.
round_robin_counter: AtomicUsizeRound-robin counter.
total_kernels: AtomicU64Total kernels launched.
custom_selector: RwLock<Option<Arc<dyn Fn(&[DeviceStatus], &LaunchOptions) -> usize + Send + Sync>>>Device selection callbacks (for custom strategy).
Implementations§
Source§impl MultiGpuCoordinator
impl MultiGpuCoordinator
Sourcepub fn new(config: MultiGpuConfig) -> Arc<Self>
pub fn new(config: MultiGpuConfig) -> Arc<Self>
Create a new multi-GPU coordinator.
Sourcepub fn register_device(&self, device: DeviceInfo)
pub fn register_device(&self, device: DeviceInfo)
Register a device with the coordinator.
Sourcepub fn unregister_device(&self, index: usize)
pub fn unregister_device(&self, index: usize)
Unregister a device.
Sourcepub fn devices(&self) -> Vec<DeviceInfo>
pub fn devices(&self) -> Vec<DeviceInfo>
Get all registered devices.
Sourcepub fn device(&self, index: usize) -> Option<DeviceInfo>
pub fn device(&self, index: usize) -> Option<DeviceInfo>
Get device info by index.
Sourcepub fn device_count(&self) -> usize
pub fn device_count(&self) -> usize
Get number of devices.
Sourcepub fn select_device(&self, options: &LaunchOptions) -> Result<usize>
pub fn select_device(&self, options: &LaunchOptions) -> Result<usize>
Select a device for launching a kernel.
Sourcepub fn assign_kernel(&self, kernel_id: KernelId, device_index: usize)
pub fn assign_kernel(&self, kernel_id: KernelId, device_index: usize)
Assign a kernel to a device.
Sourcepub fn remove_kernel(&self, kernel_id: &KernelId)
pub fn remove_kernel(&self, kernel_id: &KernelId)
Remove a kernel assignment.
Sourcepub fn get_kernel_device(&self, kernel_id: &KernelId) -> Option<usize>
pub fn get_kernel_device(&self, kernel_id: &KernelId) -> Option<usize>
Get device for a kernel.
Sourcepub fn kernels_on_device(&self, device_index: usize) -> Vec<KernelId>
pub fn kernels_on_device(&self, device_index: usize) -> Vec<KernelId>
Get all kernels on a device.
Sourcepub fn get_all_status(&self) -> Vec<DeviceStatus>
pub fn get_all_status(&self) -> Vec<DeviceStatus>
Get status of all devices.
Sourcepub fn get_device_status(&self, device_index: usize) -> Option<DeviceStatus>
pub fn get_device_status(&self, device_index: usize) -> Option<DeviceStatus>
Get status of a specific device.
Sourcepub fn set_custom_selector<F>(&self, selector: F)
pub fn set_custom_selector<F>(&self, selector: F)
Set custom device selector.
Sourcepub fn stats(&self) -> MultiGpuStats
pub fn stats(&self) -> MultiGpuStats
Get coordinator statistics.
Sourcepub fn can_p2p(&self, device_a: usize, device_b: usize) -> bool
pub fn can_p2p(&self, device_a: usize, device_b: usize) -> bool
Check if P2P is available between two devices.
Sourcepub fn update_device_memory(&self, device_index: usize, available_memory: u64)
pub fn update_device_memory(&self, device_index: usize, available_memory: u64)
Update device memory info.
Auto Trait Implementations§
impl !Freeze for MultiGpuCoordinator
impl !RefUnwindSafe for MultiGpuCoordinator
impl Send for MultiGpuCoordinator
impl Sync for MultiGpuCoordinator
impl Unpin for MultiGpuCoordinator
impl !UnwindSafe for MultiGpuCoordinator
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.