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".

Implementors§