1# Copyright © 2024 Apple Inc. All rights reserved. 2# 3# Please refer to the license found in the LICENSE file in the root directory of the source tree. 4 5import argparse 6 7import sys 8 9from pathlib import Path 10 11from executorch.devtools import Inspector 12from executorch.devtools.inspector import compare_results 13 14 15def get_root_dir_path() -> Path: 16 return Path().resolve().parent.parent.parent.parent 17 18 19sys.path.append(str((get_root_dir_path() / "examples").resolve())) 20 21from inspector_utils import convert_coreml_delegate_time, parse_coreml_delegate_metadata 22 23 24def main() -> None: 25 parser = argparse.ArgumentParser() 26 parser.add_argument( 27 "--etdump_path", 28 required=True, 29 help="Provide an ETDump file path.", 30 ) 31 parser.add_argument( 32 "--etrecord_path", 33 required=False, 34 help="Provide an optional ETRecord file path.", 35 ) 36 parser.add_argument( 37 "--debug_buffer_path", 38 required=False, 39 help="Provide an optional debug buffer file path.", 40 ) 41 parser.add_argument("--compare_results", action="store_true") 42 43 args = parser.parse_args() 44 45 inspector = Inspector( 46 etdump_path=args.etdump_path, 47 etrecord=args.etrecord_path, 48 debug_buffer_path=args.debug_buffer_path, 49 delegate_metadata_parser=parse_coreml_delegate_metadata, 50 delegate_time_scale_converter=convert_coreml_delegate_time, 51 ) 52 inspector.print_data_tabular(include_delegate_debug_data=True) 53 if args.compare_results: 54 for event_block in inspector.event_blocks: 55 if event_block.name == "Execute": 56 compare_results( 57 reference_output=event_block.reference_output, 58 run_output=event_block.run_output, 59 plot=True, 60 ) 61 62 63if __name__ == "__main__": 64 main() # pragma: no cover 65