Struct MultiGpuCoordinator
pub struct MultiGpuCoordinator {
config: MultiGpuConfig,
devices: RwLock<RawRwLock, Vec<DeviceInfo>>,
kernel_device_map: RwLock<RawRwLock, HashMap<KernelId, usize>>,
device_kernel_counts: RwLock<RawRwLock, Vec<AtomicUsize>>,
round_robin_counter: AtomicUsize,
total_kernels: AtomicU64,
custom_selector: RwLock<RawRwLock, Option<Arc<dyn Fn(&[DeviceStatus], &LaunchOptions) -> usize + Send + Sync>>>,
}Expand description
Multi-GPU coordinator for managing kernels across devices.
Fields§
§config: MultiGpuConfig§devices: RwLock<RawRwLock, Vec<DeviceInfo>>§kernel_device_map: RwLock<RawRwLock, HashMap<KernelId, usize>>§device_kernel_counts: RwLock<RawRwLock, Vec<AtomicUsize>>§round_robin_counter: AtomicUsize§total_kernels: AtomicU64§custom_selector: RwLock<RawRwLock, Option<Arc<dyn Fn(&[DeviceStatus], &LaunchOptions) -> usize + Send + Sync>>>Implementations§
§impl MultiGpuCoordinator
impl MultiGpuCoordinator
pub fn new(config: MultiGpuConfig) -> Arc<MultiGpuCoordinator>
pub fn new(config: MultiGpuConfig) -> Arc<MultiGpuCoordinator>
Create a new multi-GPU coordinator.
pub fn register_device(&self, device: DeviceInfo)
pub fn register_device(&self, device: DeviceInfo)
Register a device with the coordinator.
pub fn unregister_device(&self, index: usize)
pub fn unregister_device(&self, index: usize)
Unregister a device.
pub fn devices(&self) -> Vec<DeviceInfo>
pub fn devices(&self) -> Vec<DeviceInfo>
Get all registered devices.
pub fn device(&self, index: usize) -> Option<DeviceInfo>
pub fn device(&self, index: usize) -> Option<DeviceInfo>
Get device info by index.
pub fn device_count(&self) -> usize
pub fn device_count(&self) -> usize
Get number of devices.
pub fn select_device(
&self,
options: &LaunchOptions,
) -> Result<usize, RingKernelError>
pub fn select_device( &self, options: &LaunchOptions, ) -> Result<usize, RingKernelError>
Select a device for launching a kernel.
pub 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.
pub fn remove_kernel(&self, kernel_id: &KernelId)
pub fn remove_kernel(&self, kernel_id: &KernelId)
Remove a kernel assignment.
pub 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.
pub 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.
pub fn get_all_status(&self) -> Vec<DeviceStatus>
pub fn get_all_status(&self) -> Vec<DeviceStatus>
Get status of all devices.
pub 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.
pub fn set_custom_selector<F>(&self, selector: F)
pub fn set_custom_selector<F>(&self, selector: F)
Set custom device selector.
pub fn stats(&self) -> MultiGpuStats
pub fn stats(&self) -> MultiGpuStats
Get coordinator statistics.
pub 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.
pub 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> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§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.