Skip to content
Merged
Changes from 1 commit
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
78 changes: 52 additions & 26 deletions scripts/tracelens_single_config/create_final_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def add_excel_table(worksheet, table_name, start_row=1):


def create_final_report(
gpu_combined, gpu_comparison, coll_combined, coll_comparison, output_file
gpu_combined, gpu_comparison, coll_combined, coll_comparison, output_file,baseline_label='Baseline', test_label='Test'
):
"""Create comprehensive report with all data."""

Expand Down Expand Up @@ -127,17 +127,26 @@ def create_final_report(

# Read collective comparison
coll_comp_xl = pd.ExcelFile(coll_comparison)
coll_cmp_mapping = {
"nccl_implicit_sync_cmp": "NCCL_ImplSync_Cmp",
"nccl_long_cmp": "NCCL_Long_Cmp",
}
for sheet_name in coll_comp_xl.sheet_names:
if "_cmp" in sheet_name:
df = pd.read_excel(coll_comparison, sheet_name=sheet_name)
new_name = coll_cmp_mapping.get(sheet_name, f"NCCL_{sheet_name}")
df.to_excel(writer, sheet_name=new_name, index=False)
df = pd.read_excel(coll_comparison, sheet_name=sheet_name)

# Determine appropriate naming
if 'nccl' in sheet_name.lower():
if '_cmp' in sheet_name or 'comparison' in sheet_name.lower():
new_name = f"NCCL_{sheet_name.replace('nccl_', '').title().replace('_', '')}"
else:
new_name = f"NCCL_{sheet_name}"
else:
new_name = sheet_name

df.to_excel(writer, sheet_name=new_name, index=False)

if '_cmp' in sheet_name.lower() or 'comparison' in sheet_name.lower():
comparison_sheets.append(new_name)
print(f" Added {new_name}")
else:
raw_sheets.append(new_name)

print(f" Added {new_name}")

# === CREATE SUMMARY DASHBOARD ===
print("\nCreating Summary Dashboard...")
Expand All @@ -147,25 +156,34 @@ def create_final_report(

# Create dashboard data
dashboard_data = {
"Metric": [],
"Baseline": [],
"Test": [],
"Improvement (%)": [],
"Status": [],
'Metric': [],
baseline_label: [],
test_label: [],
'Improvement (%)': [],
'Status': []
}

# Add GPU metrics
for _, row in gpu_summary.iterrows():
metric_type = row["type"]
dashboard_data["Metric"].append(f"GPU_{metric_type}")
dashboard_data["Baseline"].append(round(row["baseline_time_ms"], 2))
dashboard_data["Test"].append(round(row["test_time_ms"], 2))
dashboard_data["Improvement (%)"].append(round(row["percent_change"], 2))
dashboard_data["Status"].append(
"Better"
if row["percent_change"] > 0
else "Worse" if row["percent_change"] < -1 else "Similar"
)
# Find the actual column names (they may be config-specific like '32cu_512threads_time_ms')
time_cols = [col for col in gpu_summary.columns if 'time_ms' in col and 'diff' not in col and 'percent' not in col]
if len(time_cols) >= 2:
baseline_col = time_cols[0]
test_col = time_cols[1]
else:
# Fallback to default names
baseline_col = 'baseline_time_ms' if 'baseline_time_ms' in gpu_summary.columns else time_cols[0] if time_cols else None
test_col = 'test_time_ms' if 'test_time_ms' in gpu_summary.columns else time_cols[1] if len(time_cols) > 1 else None

if baseline_col and test_col:
for _, row in gpu_summary.iterrows():
metric_type = row['type']
dashboard_data['Metric'].append(f"GPU_{metric_type}")
dashboard_data[baseline_label].append(round(row[baseline_col], 2))
dashboard_data[test_label].append(round(row[test_col], 2))
dashboard_data['Improvement (%)'].append(round(row['percent_change'], 2) if 'percent_change' in row else 0)

pct_val = row['percent_change'] if 'percent_change' in row else 0
dashboard_data['Status'].append('Better' if pct_val > 0 else 'Worse' if pct_val < -1 else 'Similar')

dashboard_df = pd.DataFrame(dashboard_data)
dashboard_df.to_excel(writer, sheet_name="Summary_Dashboard", index=False)
Expand Down Expand Up @@ -291,6 +309,10 @@ def main():
"--coll-comparison", required=True, help="Path to collective comparison file"
)
parser.add_argument("--output", required=True, help="Output path for final report")
parser.add_argument('--baseline-label', default='Baseline',
help='Label for baseline configuration')
parser.add_argument('--test-label', default='Test',
help='Label for test configuration')

args = parser.parse_args()

Expand All @@ -312,6 +334,10 @@ def main():
args.coll_combined,
args.coll_comparison,
args.output,
#args.baseline_label.replace('_', ' '),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove the commented codes.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done,

#args.test_label.replace('_', ' ')
args.baseline_label,
args.test_label
)

return 0
Expand Down