4545from torch .export .exported_program import ExportedProgram
4646from torchao .quantization .pt2e .quantize_pt2e import convert_pt2e
4747
48- from .pass_utils import EdgePassesConfig
48+ from .pass_utils import (
49+ CompileMode ,
50+ EdgePassesConfig ,
51+ normalize_compile_mode ,
52+ resolve_opt_level ,
53+ )
4954from .passes import apply_exir_ops_passes , apply_torch_ops_passes
5055from .utils import print_ops_info
5156
@@ -364,15 +369,16 @@ def quantize_and_export_to_edge(
364369def _lower_ep_to_cadence (
365370 program : ExportedProgram ,
366371 dump_graphs : bool = False ,
367- opt_level : int = 1 ,
372+ mode : CompileMode | int | None = None ,
368373 edge_passes_config : Optional [EdgePassesConfig ] = None ,
374+ opt_level : Optional [int ] = None ,
369375) -> EdgeProgramManager :
370376 """
371377 Lower an existing ExportedProgram to edge IR and apply frontend optimization passes.
372378 """
373379 edge_prog_manager = _lower_ep_to_edge (program , dump_graphs = dump_graphs )
374380 cadence_prog_manager = apply_exir_ops_passes (
375- opt_level , edge_prog_manager , edge_passes_config
381+ resolve_opt_level ( mode , opt_level ) , edge_prog_manager , edge_passes_config
376382 )
377383 return cadence_prog_manager
378384
@@ -381,12 +387,13 @@ def export_to_cadence(
381387 model : torch .nn .Module ,
382388 inputs : tuple [object , ...],
383389 dump_graphs : bool = False ,
384- opt_level : int = 1 ,
390+ mode : CompileMode | int | None = None ,
385391 edge_passes_config : Optional [EdgePassesConfig ] = None ,
392+ opt_level : Optional [int ] = None ,
386393) -> EdgeProgramManager :
387394 edge_prog_manager = export_to_edge (model , inputs , dump_graphs = dump_graphs )
388395 cadence_prog_manager = apply_exir_ops_passes (
389- opt_level , edge_prog_manager , edge_passes_config
396+ resolve_opt_level ( mode , opt_level ) , edge_prog_manager , edge_passes_config
390397 )
391398 return cadence_prog_manager
392399
@@ -395,8 +402,9 @@ def quantize_and_export_to_cadence(
395402 model : torch .nn .Module ,
396403 inputs : tuple [object , ...],
397404 dump_graphs : bool = False ,
398- opt_level : int = 1 ,
405+ mode : CompileMode | int | None = None ,
399406 edge_passes_config : Optional [EdgePassesConfig ] = None ,
407+ opt_level : Optional [int ] = None ,
400408) -> EdgeProgramManager :
401409 """
402410 Trace, quantize, lower a model/inputs pair to edge IR and apply frontend
@@ -406,6 +414,7 @@ def quantize_and_export_to_cadence(
406414
407415 return _lower_ep_to_cadence (
408416 quantized_model ,
417+ mode = mode ,
409418 opt_level = opt_level ,
410419 dump_graphs = dump_graphs ,
411420 edge_passes_config = edge_passes_config ,
@@ -416,17 +425,19 @@ def export_to_executorch_gen_etrecord(
416425 model : torch .nn .Module ,
417426 inputs : tuple [object , ...],
418427 output_dir : Optional [str ] = None ,
419- opt_level : int = 1 ,
428+ mode : CompileMode | int | None = None ,
420429 mem_algo : int = 0 ,
421430 alloc_graph_input : bool = True ,
422431 alloc_graph_output : bool = True ,
423432 memory_config : Optional [MemoryConfig ] = None ,
424433 dump_graphs : bool = False ,
434+ opt_level : Optional [int ] = None ,
425435) -> ExecutorchProgramManager :
426436 ep = torch .export .export (model , inputs , strict = True )
427437 return _lower_ep_to_cadence_gen_etrecord (
428438 ep ,
429439 output_dir = output_dir ,
440+ mode = mode ,
430441 opt_level = opt_level ,
431442 mem_algo = mem_algo ,
432443 alloc_graph_input = alloc_graph_input ,
@@ -442,15 +453,18 @@ def export_to_executorch_gen_etrecord(
442453def _lower_ep_to_cadence_gen_etrecord (
443454 ep : ExportedProgram ,
444455 output_dir : Optional [str ] = None ,
445- opt_level : int = 1 ,
456+ mode : CompileMode | int | None = None ,
446457 mem_algo : int = 0 ,
447458 alloc_graph_input : bool = True ,
448459 alloc_graph_output : bool = True ,
449460 memory_config : Optional [MemoryConfig ] = None ,
450461 dump_graphs : bool = False ,
462+ opt_level : Optional [int ] = None ,
451463) -> ExecutorchProgramManager :
464+ normalized_mode = normalize_compile_mode (mode , opt_level )
465+ resolved_opt_level = resolve_opt_level (normalized_mode )
452466 edge_prog_manager = _lower_ep_to_edge (ep , dump_graphs )
453- cadence_prog_manager = apply_exir_ops_passes (opt_level , edge_prog_manager )
467+ cadence_prog_manager = apply_exir_ops_passes (resolved_opt_level , edge_prog_manager )
454468
455469 # Print some information to terminal
456470 print_ops_info (
@@ -463,7 +477,7 @@ def _lower_ep_to_cadence_gen_etrecord(
463477
464478 memory_planning_pass = CadenceMemoryPlanning (
465479 memory_config ,
466- opt_level = opt_level ,
480+ mode = normalized_mode ,
467481 mem_algo = mem_algo ,
468482 alloc_graph_input = alloc_graph_input ,
469483 alloc_graph_output = alloc_graph_output ,
@@ -483,7 +497,7 @@ def _lower_ep_to_cadence_gen_etrecord(
483497 print_memory_planning_info (
484498 exec_prog ,
485499 memory_config ,
486- opt_level ,
500+ normalized_mode ,
487501 alloc_graph_input ,
488502 alloc_graph_output ,
489503 )
0 commit comments