From 703dc4d6ad73c2b4b63279e8ddf4f102544eac7c Mon Sep 17 00:00:00 2001 From: xuchen-amd Date: Tue, 22 Apr 2025 18:31:47 -0400 Subject: [PATCH] process hip trace output. (#654) Signed-off-by: xuchen-amd [ROCm/rocprofiler-compute commit: ee73c2a119b330ce84957c8f5e90f5f8b57d5fd1] --- .../rocprofiler-compute/src/utils/utils.py | 42 +++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/projects/rocprofiler-compute/src/utils/utils.py b/projects/rocprofiler-compute/src/utils/utils.py index 24370386c4..dcab0bf152 100644 --- a/projects/rocprofiler-compute/src/utils/utils.py +++ b/projects/rocprofiler-compute/src/utils/utils.py @@ -42,7 +42,13 @@ from pathlib import Path as path import pandas as pd import config -from utils.logger import console_debug, console_error, console_log, console_warning +from utils.logger import ( + console_debug, + console_error, + console_log, + console_warning, + demarcate, +) from utils.mi_gpu_spec import get_num_xcds rocprof_cmd = "" @@ -641,14 +647,12 @@ def run_prof( results_files = process_rocprofv3_output( format_rocprof_output, workload_dir, is_timestamps ) - # kokkos trace output processing for --kokkos-trace - # TODO: as rocprofv3 --kokkos-trace feature improves, rocprof-compute should make updates accordingly + if "--kokkos-trace" in options: - console_debug( - "[run_prof] --kokkos-trace detected, handling *_marker_api_trace.csv outputs." - ) + # TODO: as rocprofv3 --kokkos-trace feature improves, rocprof-compute should make updates accordingly process_kokkos_trace_output(workload_dir, fbase) - # TODO: add hip trace output processing + elif "--hip-trace" in options: + process_hip_trace_output(workload_dir, fbase) # Combine results into single CSV file if results_files: @@ -810,6 +814,7 @@ def process_rocprofv3_output(rocprof_output, workload_dir, is_timestamps): return results_files_csv +@demarcate def process_kokkos_trace_output(workload_dir, fbase): # marker api trace csv files are generated for each process marker_api_trace_csvs = glob.glob( @@ -834,6 +839,29 @@ def process_kokkos_trace_output(workload_dir, fbase): ) +@demarcate +def process_hip_trace_output(workload_dir, fbase): + # marker api trace csv files are generated for each process + hip_api_trace_csvs = glob.glob(workload_dir + "/out/pmc_1/*/*_hip_api_trace.csv") + existing_hip_files_csv = [d for d in hip_api_trace_csvs if path(d).is_file()] + + # concate and output marker api trace info + combined_results = pd.concat( + [pd.read_csv(f) for f in existing_hip_files_csv], ignore_index=True + ) + + combined_results.to_csv( + workload_dir + "/out/pmc_1/results_" + fbase + "_hip_api_trace.csv", + index=False, + ) + + if path(workload_dir + "/out").exists(): + shutil.copyfile( + workload_dir + "/out/pmc_1/results_" + fbase + "_hip_api_trace.csv", + workload_dir + "/" + fbase + "_hip_api_trace.csv", + ) + + def replace_timestamps(workload_dir): df_stamps = pd.read_csv(workload_dir + "/timestamps.csv") if "Start_Timestamp" in df_stamps.columns and "End_Timestamp" in df_stamps.columns: