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 CubeTask<Self::Compiler>>>;
    type Device: Device;

    // Required methods
    fn client(device: &Self::Device) -> ComputeClient<Self>;
    fn name(client: &ComputeClient<Self>) -> &'static str;
    fn max_cube_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 require_array_lengths() -> bool { ... }
    fn enumerate_all_devices(
        info: &<Self::Server as ComputeServer>::Info,
    ) -> Vec<DeviceId> { ... }
}
Expand description

Runtime for the CubeCL.

Required Associated Types§

Source

type Compiler: Compiler

The compiler used to compile the inner representation into tokens.

Source

type Server: ComputeServer<Kernel = Box<dyn CubeTask<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_cube_count() -> (u32, u32, u32)

Returns the maximum cube 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 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", so this trait is not object safe.

Implementors§