Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ pub struct Cli {
/// For export specific logs
#[arg(short, long)]
export: bool,
/// For inductor provenance tracking highlighter
#[arg(short, long)]
inductor_provenance: bool,
}

fn main() -> anyhow::Result<()> {
Expand Down Expand Up @@ -96,7 +93,6 @@ fn main() -> anyhow::Result<()> {
verbose: cli.verbose,
plain_text: cli.plain_text,
export: cli.export,
inductor_provenance: cli.inductor_provenance,
};

let output = parse_path(&path, config)?;
Expand Down
102 changes: 50 additions & 52 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ pub struct ParseConfig {
pub verbose: bool,
pub plain_text: bool,
pub export: bool,
pub inductor_provenance: bool,
}

impl Default for ParseConfig {
Expand All @@ -42,7 +41,6 @@ impl Default for ParseConfig {
verbose: false,
plain_text: false,
export: false,
inductor_provenance: false,
}
}
}
Expand Down Expand Up @@ -793,7 +791,10 @@ pub fn parse_path(path: &PathBuf, config: ParseConfig) -> anyhow::Result<ParseOu
num_breaks: breaks.failures.len(),
has_chromium_events: !chromium_events.is_empty(),
qps: TEMPLATE_QUERY_PARAM_SCRIPT,
has_inductor_provenance: config.inductor_provenance,
has_inductor_provenance: output.iter().any(|(path, _)| {
path.to_string_lossy()
.contains("inductor_provenance_tracking_node_mappings")
}),
directory_names: directory_names.clone(),
};
output.push((
Expand Down Expand Up @@ -822,57 +823,54 @@ pub fn parse_path(path: &PathBuf, config: ParseConfig) -> anyhow::Result<ParseOu
return Err(anyhow!("Some log entries did not have compile id"));
}

if config.inductor_provenance {
// Helper function to get file content for a specific directory name
fn get_file_content(
output: &[(PathBuf, String)],
filename_pattern: &str,
directory_name: &str,
) -> String {
// get the last file that include the filename_pattern in the output
output
.iter()
.rev()
.find(|(path, _)| {
path.to_string_lossy()
.contains(&format!("{}/{}", directory_name, filename_pattern))
})
.map(|(_, content)| content.clone())
.unwrap_or_default()
}
// Helper function to get file content for a specific directory name
fn get_file_content(
output: &[(PathBuf, String)],
filename_pattern: &str,
directory_name: &str,
) -> String {
// get the last file that include the filename_pattern in the output
output
.iter()
.rev()
.find(|(path, _)| {
path.to_string_lossy()
.contains(&format!("{}/{}", directory_name, filename_pattern))
})
.map(|(_, content)| content.clone())
.unwrap_or_default()
}

// Generate HTML for each directory name
for directory_name in &directory_names {
let pre_grad_graph_content =
get_file_content(&output, "inductor_pre_grad_graph", directory_name);
let post_grad_graph_content =
get_file_content(&output, "inductor_post_grad_graph", directory_name);
let output_code_content =
get_file_content(&output, "inductor_output_code", directory_name);
let aot_code_content =
get_file_content(&output, "inductor_aot_wrapper_code", directory_name);
let node_mappings_content = get_file_content(
&output,
"inductor_provenance_tracking_node_mappings",
directory_name,
);
// Generate Inductor Provenance Tracking HTML for each directory name
for directory_name in &directory_names {
let pre_grad_graph_content =
get_file_content(&output, "inductor_pre_grad_graph", directory_name);
let post_grad_graph_content =
get_file_content(&output, "inductor_post_grad_graph", directory_name);
let output_code_content = get_file_content(&output, "inductor_output_code", directory_name);
let aot_code_content =
get_file_content(&output, "inductor_aot_wrapper_code", directory_name);
let node_mappings_content = get_file_content(
&output,
"inductor_provenance_tracking_node_mappings",
directory_name,
);

output.push((
PathBuf::from(format!("provenance_tracking_{}.html", directory_name)),
tt.render(
"provenance_tracking.html",
&ProvenanceContext {
css: PROVENANCE_CSS,
js: PROVENANCE_JS,
pre_grad_graph_content,
post_grad_graph_content,
output_code_content,
aot_code_content,
node_mappings_content,
},
)?,
));
}
output.push((
PathBuf::from(format!("provenance_tracking_{}.html", directory_name)),
tt.render(
"provenance_tracking.html",
&ProvenanceContext {
css: PROVENANCE_CSS,
js: PROVENANCE_JS,
pre_grad_graph_content,
post_grad_graph_content,
output_code_content,
aot_code_content,
node_mappings_content,
},
)?,
));
}

Ok(output)
Expand Down
1 change: 0 additions & 1 deletion tests/integration_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,6 @@ fn test_provenance_tracking() {
// Read the test file
let path = Path::new("tests/inputs/inductor_provenance_aot_cuda_log.txt").to_path_buf();
let config = tlparse::ParseConfig {
inductor_provenance: true,
..Default::default()
};
let output = tlparse::parse_path(&path, config);
Expand Down
Loading