diff --git a/src/omniperf b/src/omniperf index 520af84468..c22aaa4e67 100755 --- a/src/omniperf +++ b/src/omniperf @@ -456,7 +456,7 @@ def characterize_app(args, VER): # Manually join each pmc_perf*.csv output if args.use_rocscope == False: - join_prof(workload_dir, workload_dir + "/pmc_perf.csv") + join_prof(workload_dir, args.join_type) ################################################ @@ -685,7 +685,7 @@ def omniperf_profile(args, VER): # Manually join each pmc_perf*.csv output if args.use_rocscope == False: - join_prof(workload_dir, workload_dir + "/pmc_perf.csv") + join_prof(workload_dir, args.join_type) # Generate sysinfo gen_sysinfo(args.name, workload_dir, args.ipblocks, args.remaining, args.no_roof) diff --git a/src/parser.py b/src/parser.py index a18ad5d22b..65b29f12e0 100644 --- a/src/parser.py +++ b/src/parser.py @@ -182,6 +182,14 @@ def parse(my_parser): required=False, help="\t\t\tDispatch ID filtering.", ) + profile_group.add_argument( + "--join-type", + metavar="", + required=False, + choices=["kernel", "grid"], + default="grid", + help="\t\t\tChoose how to join rocprof runs: (DEFAULT: grid)\n\t\t\t kernel (i.e. By unique kernel name dispatches)\n\t\t\t grid (i.e. By unique kernel name + grid size dispatches)", + ) profile_group.add_argument( "--no-roof", required=False, diff --git a/src/utils/perfagg.py b/src/utils/perfagg.py index 81537d6261..333498b2c6 100755 --- a/src/utils/perfagg.py +++ b/src/utils/perfagg.py @@ -88,15 +88,27 @@ perfmon_config = { # joins disparate runs less dumbly than rocprof -def join_prof(workload_dir, out): +def join_prof(workload_dir, join_type, out=None): + # Set default output directory if not specified + if out == None: + out = workload_dir + "/pmc_perf.csv" files = glob.glob(workload_dir + "/" + "pmc_perf_*.csv") df = None for i, file in enumerate(files): # _df = parse_rocprof_kernels(file) + _df = pd.read_csv(file) key = _df.groupby("KernelName").cumcount() - _df["key"] = _df.KernelName + " - " + key.astype(str) + if join_type == "kernel": + _df["key"] = _df.KernelName + " - " + key.astype(str) + elif join_type == "grid": + _df["key"] = ( + _df.KernelName + " - " + key.astype(str) + " - " + _df.grd.astype(str) + ) + else: + print("ERROR: Unrecognized --join-type") + sys.exit(1) if df is None: df = _df