Implement custom merge utility for rocprof

Signed-off-by: coleramos425 <colramos@amd.com>


[ROCm/rocprofiler-compute commit: a9d82759ca]
This commit is contained in:
coleramos425
2023-05-05 15:07:20 -05:00
parent 3efe1c6b5a
commit f7fe3d9efd
2 changed files with 110 additions and 5 deletions
+21 -5
View File
@@ -38,7 +38,7 @@ import warnings
from parser import parse
from utils import specs
from utils.perfagg import perfmon_filter, pmc_filter
from utils.perfagg import perfmon_filter, pmc_filter, pmc_perf_split, join_prof
from utils import remove_workload
from utils import csv_converter # Import workload
from omniperf_analyze.omniperf_analyze import roofline_only # Standalone roofline
@@ -163,11 +163,13 @@ def isWorkloadEmpty(my_parser, path):
def replace_timestamps(workload_dir):
df_stamps = pd.read_csv(workload_dir + "/timestamps.csv")
if "BeginNs" in df_stamps.columns and "EndNs" in df_stamps.columns:
df_pmc_perf = pd.read_csv(workload_dir + "/pmc_perf.csv")
# Update timestamps for all *.csv output files
for fname in glob.glob(workload_dir + "/" + "*.csv"):
df_pmc_perf = pd.read_csv(fname)
df_pmc_perf["BeginNs"] = df_stamps["BeginNs"]
df_pmc_perf["EndNs"] = df_stamps["EndNs"]
df_pmc_perf.to_csv(workload_dir + "/pmc_perf.csv", index=False)
df_pmc_perf["BeginNs"] = df_stamps["BeginNs"]
df_pmc_perf["EndNs"] = df_stamps["EndNs"]
df_pmc_perf.to_csv(fname, index=False)
else:
warnings.warn(
"WARNING: Incomplete profiling data detected. Unable to update timestamps."
@@ -395,6 +397,9 @@ def characterize_app(args, VER):
# Perfmon filtering
pmc_filter(workload_dir, perfmon_dir, args.target)
# Separate pmc_perf runs
pmc_perf_split(workload_dir, perfmon_dir)
# Set up a log file
log = open(workload_dir + "/log.txt", "w")
print("Log: ", workload_dir + "/log.txt\n")
@@ -449,6 +454,10 @@ def characterize_app(args, VER):
# Update pmc_perf.csv timestamps
replace_timestamps(workload_dir)
# Manually join each pmc_perf*.csv output
if args.use_rocscope == False:
join_prof(workload_dir, workload_dir + "/pmc_perf_NEW.csv")
################################################
# Profiling Helpers
@@ -551,6 +560,9 @@ def omniperf_profile(args, VER):
# Perfmon filtering
perfmon_filter(workload_dir, perfmon_dir, args)
# Separate pmc_perf runs
pmc_perf_split(workload_dir)
# Set up a log file
log = open(workload_dir + "/log.txt", "w")
print("Log: ", workload_dir + "/log.txt\n")
@@ -670,6 +682,10 @@ def omniperf_profile(args, VER):
)
# Update pmc_perf.csv timestamps
replace_timestamps(workload_dir)
# Manually join each pmc_perf*.csv output
if args.use_rocscope == False:
join_prof(workload_dir, workload_dir + "/pmc_perf.csv")
# Generate sysinfo
gen_sysinfo(args.name, workload_dir, args.ipblocks, args.remaining, args.no_roof)