Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:22:17

0001 # SPDX-PackageName = "traccc, a part of the ACTS project"
0002 # SPDX-FileCopyrightText: CERN
0003 # SPDX-License-Identifier: MPL-2.0
0004 
0005 import logging
0006 import argparse
0007 import pathlib
0008 
0009 from traccc_bench_tools.parse_profile import parse_profile_ncu, parse_profile_csv
0010 from traccc_bench_tools import types
0011 
0012 log = logging.getLogger("traccc_parse_profile")
0013 
0014 
0015 def main():
0016     parser = argparse.ArgumentParser()
0017 
0018     parser.add_argument(
0019         "input",
0020         type=pathlib.Path,
0021         help="the input .ncu-rep or .csv file",
0022     )
0023 
0024     parser.add_argument(
0025         "output",
0026         type=pathlib.Path,
0027         help="the output .csv file",
0028     )
0029 
0030     parser.add_argument(
0031         "--num-sm",
0032         help="number of SMs in the modelled GPU",
0033         type=int,
0034         required=True,
0035         dest="num_sm",
0036     )
0037 
0038     parser.add_argument(
0039         "--num-threads-per-sm",
0040         help="number of thread slots per SM in the modelled GPU",
0041         type=int,
0042         required=True,
0043         dest="num_threads_per_sm",
0044     )
0045 
0046     parser.add_argument(
0047         "--event-delimiter-kernel",
0048         help="name of kernel that delimits events",
0049         type=str,
0050         default="ccl_kernel",
0051         dest="event_delimiter_kernel",
0052     )
0053 
0054     parser.add_argument(
0055         "-v",
0056         "--verbose",
0057         help="enable verbose output",
0058         action="store_true",
0059     )
0060 
0061     args = parser.parse_args()
0062 
0063     logging.basicConfig(
0064         level=logging.DEBUG if (args.verbose or False) else logging.INFO,
0065         format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
0066     )
0067 
0068     spec = types.GpuSpec(getattr(args, "num_sm"), getattr(args, "num_threads_per_sm"))
0069 
0070     df = None
0071 
0072     if args.input.suffix == ".ncu-rep":
0073         log.info("Input file is an NSight Compute profile file")
0074         df = parse_profile_ncu(
0075             args.input,
0076             spec,
0077             event_marker_kernel=getattr(args, "event_delimiter_kernel", None),
0078         )
0079     elif args.input.suffix == ".csv":
0080         log.info("Input file is a CSV file")
0081         df = parse_profile_csv(
0082             args.input,
0083             spec,
0084             event_marker_kernel=getattr(args, "event_delimiter_kernel", None),
0085         )
0086     else:
0087         log.fatal("Input file has unknown extension %s", args.input.suffix)
0088         exit(1)
0089 
0090     df.to_csv(args.output, index=False)
0091 
0092 
0093 if __name__ == "__main__":
0094     main()