Skip to main content

Runtime

Trait Runtime 

Source
pub trait Runtime:
    Sized
    + Send
    + Sync
    + 'static
    + Debug
    + Clone {
    type Compiler: Compiler;
    type Server: ComputeServer<Kernel = Box<dyn RudaTask<Self::Compiler>>>;
    type Device: Device;

    // Required methods
    fn client(device: &Self::Device) -> ComputeClient<Self>;
    fn name(client: &ComputeClient<Self>) -> &'static str;
    fn max_ruda_count() -> (u32, u32, u32);
    fn can_read_tensor(shape: &Shape, strides: &Strides) -> bool;
    fn target_properties() -> TargetProperties;
    fn enumerate_devices(
        type_id: u16,
        info: &<Self::Server as ComputeServer>::Info,
    ) -> Vec<DeviceId>;

    // Provided methods
    fn autotune_driver_fingerprint(
        _client: &ComputeClient<Self>,
    ) -> Option<String> { ... }
    fn require_array_lengths() -> bool { ... }
    fn enumerate_all_devices(
        info: &<Self::Server as ComputeServer>::Info,
    ) -> Vec<DeviceId> { ... }
}
Expand description

Runtime for the Ruda.

Required Associated Types§

Source

type Compiler: Compiler

The compiler used to compile the inner representation into tokens.

Source

type Server: ComputeServer<Kernel = Box<dyn RudaTask<Self::Compiler>>>

The compute server used to run kernels and perform autotuning.

Source

type Device: Device

The device used to retrieve the compute client.

Required Methods§

Source

fn client(device: &Self::Device) -> ComputeClient<Self>

Retrieve the compute client from the runtime device.

Source

fn name(client: &ComputeClient<Self>) -> &'static str

The runtime name on the given device.

Source

fn max_ruda_count() -> (u32, u32, u32)

Returns the maximum ruda count on each dimension that can be launched.

Source

fn can_read_tensor(shape: &Shape, strides: &Strides) -> bool

Whether a tensor with shape and strides can be read as is. If the result is false, the tensor should be made contiguous before reading.

Source

fn target_properties() -> TargetProperties

Returns the properties of the target hardware architecture.

Source

fn enumerate_devices( type_id: u16, info: &<Self::Server as ComputeServer>::Info, ) -> Vec<DeviceId>

Returns all devices available under the provided type id.

Provided Methods§

Source

fn autotune_driver_fingerprint(_client: &ComputeClient<Self>) -> Option<String>

Stable loaded driver/runtime identity for persistent autotuning. Unknown backends return None and use session-only caches; device ordinal or API major version alone is insufficient. Adding a default preserves existing custom Runtime implementations.

Source

fn require_array_lengths() -> bool

Return true if global input array lengths should be added to kernel info.

Source

fn enumerate_all_devices( info: &<Self::Server as ComputeServer>::Info, ) -> Vec<DeviceId>

Returns all devices that can be handled by the runtime.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§