Filter enqueues to be saved

This commit is contained in:
Andrzej Janik 2025-09-19 02:07:59 +00:00
commit 3289d92f59
3 changed files with 22 additions and 0 deletions

View file

@ -1280,6 +1280,7 @@ struct Settings {
dump_dir: Option<PathBuf>,
libcuda_path: String,
override_cc: Option<(u32, u32)>,
kernel_name_filter: Option<regex::Regex>,
}
impl Settings {
@ -1328,10 +1329,25 @@ impl Settings {
})
}),
};
let kernel_name_filter = match env::var("ZLUDA_SAVE_KERNELS") {
Err(env::VarError::NotPresent) => None,
Err(e) => {
logger.log(log::ErrorEntry::ErrorBox(Box::new(e) as _));
None
}
Ok(env_string) => logger.try_return(|| {
regex::Regex::new(&env_string).map_err(|e| ErrorEntry::InvalidEnvVar {
var: "ZLUDA_SAVE_KERNELS",
pattern: "valid regex",
value: format!("{} ({})", env_string, e),
})
}),
};
Settings {
dump_dir,
libcuda_path,
override_cc,
kernel_name_filter,
}
}

View file

@ -27,6 +27,10 @@ pub(crate) fn pre_kernel_launch(
.get(&f)
.ok_or(ErrorEntry::UnknownFunctionHandle(f))
})?;
let kernel_name_filter = state.kernel_name_filter.as_ref()?;
if !kernel_name_filter.is_match(name) {
return None;
}
let ParsedModule { source, kernels } = fn_logger.try_return(|| {
state
.parsed_libraries

View file

@ -27,6 +27,7 @@ pub(crate) struct StateTracker {
library_counter: usize,
pub(crate) enqueue_counter: usize,
pub(crate) override_cc: Option<(u32, u32)>,
pub(crate) kernel_name_filter: Option<regex::Regex>,
}
pub(crate) struct ParsedModule {
@ -55,6 +56,7 @@ impl StateTracker {
library_counter: 0,
enqueue_counter: 0,
override_cc: settings.override_cc,
kernel_name_filter: settings.kernel_name_filter.clone(),
}
}