Skip to main content

KernelRegistry

Struct KernelRegistry 

Source
pub struct KernelRegistry { /* private fields */ }
Expand description

Central registry for all kernels.

Implementations§

Source§

impl KernelRegistry

Source

pub fn new() -> Self

Create a new empty registry.

Source

pub fn with_license(license: SharedLicenseValidator) -> Self

Create a registry with license validation.

Source

pub fn set_license(&mut self, license: SharedLicenseValidator)

Set the license validator.

Source

pub fn register_batch(&self, entry: BatchKernelEntry) -> Result<()>

Register a batch kernel.

Source

pub fn register_ring(&self, entry: RingKernelEntry) -> Result<()>

Register a ring kernel.

Source

pub fn register_metadata(&self, metadata: KernelMetadata) -> Result<()>

Register kernel metadata without a factory.

This is useful for kernels that implement GpuKernel but not the type-erased BatchKernelDyn or RingKernelDyn traits. The metadata is stored for discovery purposes, but the kernel cannot be instantiated through the registry.

Source

pub fn get_batch(&self, id: &str) -> Option<BatchKernelEntry>

Get a batch kernel by ID.

Source

pub fn get_ring(&self, id: &str) -> Option<RingKernelEntry>

Get a ring kernel by ID.

Source

pub fn get(&self, id: &str) -> Option<KernelMetadata>

Get any kernel metadata by ID (batch, ring, or metadata-only).

Source

pub fn get_metadata_only(&self, id: &str) -> Option<KernelMetadata>

Get metadata-only entry by ID.

Source

pub fn contains(&self, id: &str) -> bool

Check if a kernel exists.

Source

pub fn batch_kernel_ids(&self) -> Vec<String>

Get all batch kernel IDs.

Source

pub fn ring_kernel_ids(&self) -> Vec<String>

Get all ring kernel IDs.

Source

pub fn metadata_only_ids(&self) -> Vec<String>

Get all metadata-only kernel IDs.

Source

pub fn all_kernel_ids(&self) -> Vec<String>

Get all kernel IDs.

Source

pub fn by_domain(&self, domain: Domain) -> Vec<KernelMetadata>

Get kernels by domain.

Source

pub fn by_mode(&self, mode: KernelMode) -> Vec<KernelMetadata>

Get kernels by mode.

Source

pub fn stats(&self) -> RegistryStats

Get registry statistics.

Source

pub fn register_batch_typed<K, I, O>( &self, factory: impl Fn() -> K + Send + Sync + 'static, ) -> Result<()>
where K: BatchKernel<I, O> + 'static, I: DeserializeOwned + Send + Sync + 'static, O: Serialize + Send + Sync + 'static,

Register a batch kernel using a typed factory function.

This is the preferred way to register batch kernels. The factory closure creates kernel instances on demand, and type erasure is handled automatically via TypeErasedBatchKernel.

§Type Inference

Rust infers I and O from the BatchKernel<I, O> implementation on K, so turbofish syntax is typically not needed:

registry.register_batch_typed(|| MyKernel::new())?;
§Errors

Returns an error if the kernel ID is already registered or fails license validation.

Source

pub fn register_batch_metadata_from<K>( &self, factory: impl Fn() -> K, ) -> Result<()>
where K: GpuKernel,

Register a batch kernel’s metadata from a factory function.

This is for batch-mode kernels that implement GpuKernel but not the full BatchKernel<I, O> trait. The metadata is stored for discovery and health checking.

§Errors

Returns an error if the kernel ID is already registered or fails license validation.

Source

pub fn register_ring_metadata_from<K>( &self, factory: impl Fn() -> K, ) -> Result<()>
where K: GpuKernel,

Register a ring kernel’s metadata from a factory function.

Ring kernels require the RingKernel runtime for persistent actor execution and cannot be invoked directly via REST. This method registers the kernel’s metadata for discovery and health checking.

For full ring kernel deployment, use the RingKernel runtime directly.

§Errors

Returns an error if the kernel ID is already registered or fails license validation.

Source

pub async fn execute_batch( &self, kernel_id: &str, input_json: &[u8], ) -> Result<Vec<u8>>

Execute a batch kernel by ID with JSON input/output.

Looks up the kernel in the registry, creates an instance, and executes it with type-erased JSON serialization.

§Errors

Returns KernelNotFound if no batch kernel with this ID exists, or propagates any execution error from the kernel.

Source

pub fn total_count(&self) -> usize

Total number of registered kernels.

Source

pub fn all_metadata(&self) -> Vec<KernelMetadata>

Get all kernel metadata across all categories, sorted by ID.

Returns metadata for batch, ring, and metadata-only kernels.

Source

pub fn search(&self, pattern: &str) -> Vec<KernelMetadata>

Search kernels by pattern (case-insensitive substring match on ID and description).

Source

pub fn executable_kernel_ids(&self) -> Vec<String>

Get all executable batch kernel IDs (kernels with factory functions).

These are the kernels that can be invoked via REST/gRPC through the type-erased BatchKernelDyn interface.

Source

pub fn is_executable(&self, id: &str) -> bool

Check if a kernel is executable via REST/gRPC (has a BatchKernelDyn factory).

Source

pub fn clear(&self)

Clear all registered kernels.

Source

pub fn unregister(&self, id: &str) -> bool

Unregister a kernel by ID.

Trait Implementations§

Source§

impl Debug for KernelRegistry

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for KernelRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

Source§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Gets the layout of the type.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The type for metadata in pointers and references to Self.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more