pub trait Runtime:
Send
+ Sync
+ 'static
+ Debug {
type Compiler: Compiler;
type Server: ComputeServer<Kernel = Box<dyn CubeTask<Self::Compiler>>>;
type Device: Device;
// Required methods
fn client(device: &Self::Device) -> ComputeClient<Self::Server>;
fn name(client: &ComputeClient<Self::Server>) -> &'static str;
fn supported_line_sizes() -> &'static [u8] ⓘ;
fn max_cube_count() -> (u32, u32, u32);
fn can_read_tensor(shape: &[usize], strides: &[usize]) -> bool;
fn target_properties() -> TargetProperties;
// Provided methods
fn require_array_lengths() -> bool { ... }
fn max_global_line_size() -> u8 { ... }
fn io_optimized_line_sizes(
elem: &StorageType,
) -> impl Iterator<Item = u8> + Clone { ... }
fn io_optimized_line_sizes_unchecked(
size: usize,
) -> impl Iterator<Item = u8> + Clone { ... }
}Expand description
Runtime for the CubeCL.
Required Associated Types§
Required Methods§
Sourcefn client(device: &Self::Device) -> ComputeClient<Self::Server>
fn client(device: &Self::Device) -> ComputeClient<Self::Server>
Retrieve the compute client from the runtime device.
Sourcefn name(client: &ComputeClient<Self::Server>) -> &'static str
fn name(client: &ComputeClient<Self::Server>) -> &'static str
The runtime name on the given device.
Sourcefn supported_line_sizes() -> &'static [u8] ⓘ
fn supported_line_sizes() -> &'static [u8] ⓘ
Returns the supported line sizes for the current runtime’s compiler.
Sourcefn max_cube_count() -> (u32, u32, u32)
fn max_cube_count() -> (u32, u32, u32)
Returns the maximum cube count on each dimension that can be launched.
fn can_read_tensor(shape: &[usize], strides: &[usize]) -> bool
Sourcefn target_properties() -> TargetProperties
fn target_properties() -> TargetProperties
Returns the properties of the target hardware architecture.
Provided Methods§
Sourcefn require_array_lengths() -> bool
fn require_array_lengths() -> bool
Return true if global input array lengths should be added to kernel info.
Sourcefn max_global_line_size() -> u8
fn max_global_line_size() -> u8
The maximum line size that can be used for global buffer bindings.
Sourcefn io_optimized_line_sizes(
elem: &StorageType,
) -> impl Iterator<Item = u8> + Clone
fn io_optimized_line_sizes( elem: &StorageType, ) -> impl Iterator<Item = u8> + Clone
Returns all line sizes that are useful to perform optimal IO operation on the given element.
Sourcefn io_optimized_line_sizes_unchecked(
size: usize,
) -> impl Iterator<Item = u8> + Clone
fn io_optimized_line_sizes_unchecked( size: usize, ) -> impl Iterator<Item = u8> + Clone
Returns all line sizes that are useful to perform optimal IO operation on the given element. Ignores native support, and allows all line sizes. This means the returned size may be unrolled, and may not support dynamic indexing.
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.