Struct HotReloadManager
pub struct HotReloadManager {
config: HotReloadConfig,
kernels: RwLock<RawRwLock, HashMap<KernelId, KernelCodeSource>>,
fallbacks: RwLock<RawRwLock, HashMap<KernelId, KernelCodeSource>>,
active_requests: RwLock<RawRwLock, HashMap<KernelId, HotReloadRequest>>,
version_counter: AtomicU64,
stats: HotReloadStats,
}Expand description
Manager for kernel hot reload operations.
Provides seamless kernel code updates without stopping the system:
- Drain pending messages from kernel input queue
- Checkpoint kernel state (if preserving state)
- Compile/validate new kernel code
- Swap old kernel with new kernel
- Restore state to new kernel
- Resume processing
§Example
ⓘ
use ringkernel_core::multi_gpu::{HotReloadManager, HotReloadConfig, KernelCodeSource};
let manager = HotReloadManager::new(HotReloadConfig::default());
// Register a reloadable kernel
manager.register_kernel(&kernel_id, current_code);
// Request hot reload with new PTX
let new_code = KernelCodeSource::from_ptx(new_ptx, "my_kernel");
let request = manager.request_reload(&kernel_id, new_code).await?;
// Execute the reload
let result = manager.execute_reload(request, &mut kernel).await?;
println!("Reload completed in {:?}", result.total_duration);Fields§
§config: HotReloadConfig§kernels: RwLock<RawRwLock, HashMap<KernelId, KernelCodeSource>>§fallbacks: RwLock<RawRwLock, HashMap<KernelId, KernelCodeSource>>§active_requests: RwLock<RawRwLock, HashMap<KernelId, HotReloadRequest>>§version_counter: AtomicU64§stats: HotReloadStatsImplementations§
§impl HotReloadManager
impl HotReloadManager
pub fn new(config: HotReloadConfig) -> Arc<HotReloadManager>
pub fn new(config: HotReloadConfig) -> Arc<HotReloadManager>
Create a new hot reload manager.
pub fn with_defaults() -> Arc<HotReloadManager>
pub fn with_defaults() -> Arc<HotReloadManager>
Create with default configuration.
pub fn is_enabled(&self) -> bool
pub fn is_enabled(&self) -> bool
Check if hot reload is enabled.
pub fn register_kernel(&self, kernel_id: &KernelId, code: KernelCodeSource)
pub fn register_kernel(&self, kernel_id: &KernelId, code: KernelCodeSource)
Register a kernel for hot reload.
pub fn unregister_kernel(&self, kernel_id: &KernelId)
pub fn unregister_kernel(&self, kernel_id: &KernelId)
Unregister a kernel from hot reload.
pub fn get_current_version(&self, kernel_id: &KernelId) -> Option<u64>
pub fn get_current_version(&self, kernel_id: &KernelId) -> Option<u64>
Get current code version for a kernel.
pub fn get_current_code(&self, kernel_id: &KernelId) -> Option<KernelCodeSource>
pub fn get_current_code(&self, kernel_id: &KernelId) -> Option<KernelCodeSource>
Get current code for a kernel.
pub fn request_reload(
&self,
kernel_id: &KernelId,
new_code: KernelCodeSource,
) -> Result<HotReloadRequest, RingKernelError>
pub fn request_reload( &self, kernel_id: &KernelId, new_code: KernelCodeSource, ) -> Result<HotReloadRequest, RingKernelError>
Request a hot reload for a kernel.
pub fn execute_reload<K>(
&self,
request: &mut HotReloadRequest,
kernel: &K,
) -> Result<HotReloadResult, RingKernelError>where
K: CheckpointableKernel,
pub fn execute_reload<K>(
&self,
request: &mut HotReloadRequest,
kernel: &K,
) -> Result<HotReloadResult, RingKernelError>where
K: CheckpointableKernel,
Execute a hot reload operation.
This performs the full reload sequence:
- Drain pending messages
- Checkpoint state (if enabled)
- Validate new code
- Swap kernels
- Restore state (if enabled)
pub fn rollback(&self, kernel_id: &KernelId) -> Result<(), RingKernelError>
pub fn rollback(&self, kernel_id: &KernelId) -> Result<(), RingKernelError>
Rollback to previous kernel version.
pub fn stats(&self) -> HotReloadStatsSnapshot
pub fn stats(&self) -> HotReloadStatsSnapshot
Get statistics snapshot.
pub fn list_kernels(&self) -> Vec<KernelId>
pub fn list_kernels(&self) -> Vec<KernelId>
List all registered kernels.
pub fn is_registered(&self, kernel_id: &KernelId) -> bool
pub fn is_registered(&self, kernel_id: &KernelId) -> bool
Check if a kernel is registered.
pub fn is_reload_in_progress(&self, kernel_id: &KernelId) -> bool
pub fn is_reload_in_progress(&self, kernel_id: &KernelId) -> bool
Check if a reload is in progress for a kernel.
pub fn config(&self) -> &HotReloadConfig
pub fn config(&self) -> &HotReloadConfig
Get the configuration.
Auto Trait Implementations§
impl !Freeze for HotReloadManager
impl !RefUnwindSafe for HotReloadManager
impl Send for HotReloadManager
impl Sync for HotReloadManager
impl Unpin for HotReloadManager
impl UnwindSafe for HotReloadManager
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.
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
§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>
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 more§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.