cubecl_runtime/config/memory.rs
1use super::logger::{LogLevel, LoggerConfig};
2
3/// Configuration for memory settings in CubeCL.
4#[derive(Clone, Debug, serde::Serialize, serde::Deserialize, Default)]
5pub struct MemoryConfig {
6 /// Logger configuration for memory-related logs, using specific log levels.
7 #[serde(default)]
8 pub logger: LoggerConfig<MemoryLogLevel>,
9 /// Configuration for persistent memory pools.
10 #[serde(default)]
11 pub persistent_memory: PersistentMemory,
12}
13
14/// Configuration options for persistent memory pools in CubeCL runtimes.
15#[derive(Clone, Debug, serde::Serialize, serde::Deserialize, Default)]
16pub enum PersistentMemory {
17 /// Persistent memory is enabled but used only when explicitly specified.
18 #[default]
19 #[serde(rename = "enabled")]
20 Enabled,
21 /// Persistent memory is disabled, allowing dynamic allocations.
22 #[serde(rename = "disabled")]
23 Disabled,
24 /// Persistent memory is enforced, preventing dynamic allocations.
25 ///
26 /// # Warning
27 ///
28 /// Enforcing persistent memory may cause out-of-memory errors if tensors of varying sizes are used.
29 #[serde(rename = "enforced")]
30 Enforced,
31}
32
33/// Log levels for memory-related events in CubeCL.
34#[derive(Default, Clone, Copy, Debug, serde::Serialize, serde::Deserialize)]
35pub enum MemoryLogLevel {
36 /// No memory-related logging.
37 #[default]
38 #[serde(rename = "disabled")]
39 Disabled,
40 /// Logs basic memory events, such as creating memory pages and manually cleaning memory.
41 #[serde(rename = "basic")]
42 Basic,
43 /// Logs detailed memory information.
44 #[serde(rename = "full")]
45 Full,
46}
47
48impl LogLevel for MemoryLogLevel {}