pub trait Runtime:
Send
+ Sync
+ 'static
+ Debug {
type Compiler: Compiler;
type Server: ComputeServer<Kernel = Box<dyn CubeTask<Self::Compiler>>, Feature = Feature>;
type Channel: ComputeChannel<Self::Server>;
type Device: Default + Clone + Debug + Send + Sync;
// Required methods
fn device_id(device: &Self::Device) -> DeviceId;
fn client(
device: &Self::Device,
) -> ComputeClient<Self::Server, Self::Channel>;
fn name(client: &ComputeClient<Self::Server, Self::Channel>) -> &'static str;
fn supported_line_sizes() -> &'static [u8] ⓘ;
fn max_cube_count() -> (u32, u32, u32);
// Provided methods
fn require_array_lengths() -> bool { ... }
fn line_size_elem(elem: &Elem) -> impl Iterator<Item = u8> + Clone { ... }
}
Expand description
Runtime for the CubeCL.
Required Associated Types§
Sourcetype Server: ComputeServer<Kernel = Box<dyn CubeTask<Self::Compiler>>, Feature = Feature>
type Server: ComputeServer<Kernel = Box<dyn CubeTask<Self::Compiler>>, Feature = Feature>
The compute server used to run kernels and perform autotuning.
Sourcetype Channel: ComputeChannel<Self::Server>
type Channel: ComputeChannel<Self::Server>
The channel used to communicate with the compute server.
Required Methods§
Sourcefn client(device: &Self::Device) -> ComputeClient<Self::Server, Self::Channel>
fn client(device: &Self::Device) -> ComputeClient<Self::Server, Self::Channel>
Retrieve the compute client from the runtime device.
Sourcefn name(client: &ComputeClient<Self::Server, Self::Channel>) -> &'static str
fn name(client: &ComputeClient<Self::Server, Self::Channel>) -> &'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.
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.
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.