Enhance logging and warning reporting

Signed-off-by: coleramos425 <colramos@amd.com>
このコミットが含まれているのは:
coleramos425
2023-05-16 15:39:45 -05:00
コミット 44edef4635
2個のファイルの変更73行の追加31行の削除
+24 -14
ファイルの表示
@@ -160,7 +160,7 @@ def isWorkloadEmpty(my_parser, path):
)
def replace_timestamps(workload_dir):
def replace_timestamps(workload_dir, log_file):
df_stamps = pd.read_csv(workload_dir + "/timestamps.csv")
if "BeginNs" in df_stamps.columns and "EndNs" in df_stamps.columns:
# Update timestamps for all *.csv output files
@@ -171,9 +171,11 @@ def replace_timestamps(workload_dir):
df_pmc_perf["EndNs"] = df_stamps["EndNs"]
df_pmc_perf.to_csv(fname, index=False)
else:
warning = "WARNING: Incomplete profiling data detected. Unable to update timestamps."
warnings.warn(
"WARNING: Incomplete profiling data detected. Unable to update timestamps."
warning
)
log_file.write(warning + "\n")
def gen_sysinfo(workload_name, workload_dir, ip_blocks, app_cmd, skip_roof):
@@ -408,7 +410,7 @@ def characterize_app(args, VER):
for fname in glob.glob(workload_dir + "/perfmon/*.txt"):
# Kernel filtering (in-place replacement)
if not args.kernel == None:
run_subprocess(
success, output = capture_subprocess_output(
[
"sed",
"-i",
@@ -417,10 +419,11 @@ def characterize_app(args, VER):
fname,
]
)
log.write(output)
# Dispatch filtering (inplace replacement)
if not args.dispatch == None:
run_subprocess(
success, output = capture_subprocess_output(
[
"sed",
"-i",
@@ -429,17 +432,17 @@ def characterize_app(args, VER):
fname,
]
)
log.write(output)
print(fname)
if args.use_rocscope == True:
run_rocscope(args, fname)
else:
run_prof(fname, workload_dir, perfmon_dir, app_cmd, args.target, log, args.verbose)
# Close log
log.close()
# run again with timestamps
run_subprocess(
success, output = capture_subprocess_output(
[
rocprof_cmd,
# "-i", fname,
@@ -451,12 +454,16 @@ def characterize_app(args, VER):
'"' + app_cmd + '"',
]
)
log.write(output)
# Update pmc_perf.csv timestamps
replace_timestamps(workload_dir)
replace_timestamps(workload_dir, log)
# Manually join each pmc_perf*.csv output
if args.use_rocscope == False:
join_prof(workload_dir, args.join_type)
join_prof(workload_dir, args.join_type, log, args.verbose)
# Close log
log.close()
################################################
@@ -640,7 +647,7 @@ def omniperf_profile(args, VER):
for fname in glob.glob(workload_dir + "/perfmon/*.txt"):
# Kernel filtering (in-place replacement)
if not args.kernel == None:
run_subprocess(
success, output = capture_subprocess_output(
[
"sed",
"-i",
@@ -649,10 +656,11 @@ def omniperf_profile(args, VER):
fname,
]
)
log.write(output)
# Dispatch filtering (inplace replacement)
if not args.dispatch == None:
run_subprocess(
success, output = capture_subprocess_output(
[
"sed",
"-i",
@@ -661,6 +669,7 @@ def omniperf_profile(args, VER):
fname,
]
)
log.write(output)
print(fname)
if args.use_rocscope == True:
run_rocscope(args, fname)
@@ -668,7 +677,7 @@ def omniperf_profile(args, VER):
run_prof(fname, workload_dir, perfmon_dir, args.remaining, args.target, log, args.verbose)
# run again with timestamps
run_subprocess(
success, output = capture_subprocess_output(
[
rocprof_cmd,
# "-i", fname,
@@ -680,12 +689,13 @@ def omniperf_profile(args, VER):
'"' + args.remaining + '"',
]
)
log.write(output)
# Update pmc_perf.csv timestamps
replace_timestamps(workload_dir)
replace_timestamps(workload_dir, log)
# Manually join each pmc_perf*.csv output
if args.use_rocscope == False:
join_prof(workload_dir, args.join_type)
join_prof(workload_dir, args.join_type, log, args.verbose)
# Generate sysinfo
gen_sysinfo(args.name, workload_dir, args.ipblocks, args.remaining, args.no_roof)