Skip to main content

burn_std/config/
base.rs

1use cubecl_common::config::RuntimeConfig;
2use cubecl_common::stub::Arc;
3
4use super::autodiff::AutodiffConfig;
5use super::fusion::FusionConfig;
6
7/// Static mutex holding the global Burn configuration, initialized as `None`.
8static BURN_GLOBAL_CONFIG: spin::Mutex<Option<Arc<BurnConfig>>> = spin::Mutex::new(None);
9
10/// Represents the global configuration for Burn.
11#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
12pub struct BurnConfig {
13    /// Configuration for operation fusion.
14    #[serde(default)]
15    pub fusion: FusionConfig,
16
17    /// Configuration for autodiff.
18    #[serde(default)]
19    pub autodiff: AutodiffConfig,
20}
21
22impl RuntimeConfig for BurnConfig {
23    fn storage() -> &'static spin::Mutex<Option<Arc<Self>>> {
24        &BURN_GLOBAL_CONFIG
25    }
26
27    fn file_names() -> &'static [&'static str] {
28        &["burn.toml", "Burn.toml"]
29    }
30}