cubecl_runtime/config/
autotune.rs

1#[cfg(std_io)]
2use super::cache::CacheConfig;
3use super::logger::{LogLevel, LoggerConfig};
4
5/// Configuration for autotuning in CubeCL.
6#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
7pub struct AutotuneConfig {
8    /// Logger configuration for autotune logs, using autotune-specific log levels.
9    #[serde(default)]
10    pub logger: LoggerConfig<AutotuneLogLevel>,
11
12    /// Autotune level, controlling the intensity of autotuning.
13    #[serde(default)]
14    pub level: AutotuneLevel,
15
16    /// Cache location for storing autotune results.
17    #[serde(default)]
18    #[cfg(std_io)]
19    pub cache: CacheConfig,
20}
21
22/// Log levels for autotune logging in CubeCL.
23#[derive(Default, Clone, Copy, Debug, serde::Serialize, serde::Deserialize)]
24pub enum AutotuneLogLevel {
25    /// Autotune logging is disabled.
26    #[serde(rename = "disabled")]
27    Disabled,
28
29    /// Minimal autotune information is logged such as the fastest kernel selected and a few
30    /// statistics (default).
31    #[default]
32    #[serde(rename = "minimal")]
33    Minimal,
34
35    /// Full autotune details are logged.
36    #[serde(rename = "full")]
37    Full,
38}
39
40impl LogLevel for AutotuneLogLevel {}
41
42/// Autotune levels controlling the intensity of autotuning.
43#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
44pub enum AutotuneLevel {
45    /// Minimal autotuning effort.
46    #[serde(rename = "minimal")]
47    Minimal,
48
49    /// Balanced autotuning effort (default).
50    #[default]
51    #[serde(rename = "balanced")]
52    Balanced,
53
54    /// Increased autotuning effort.
55    #[serde(rename = "extensive")]
56    Extensive,
57
58    /// Maximum autotuning effort.
59    #[serde(rename = "full")]
60    Full,
61}