Skip to content

Commit e90d3c8

Browse files
authored
Reuse existing Cadence runner build for test run if present
Differential Revision: D99325796 Pull Request resolved: #18665
1 parent 462a4af commit e90d3c8

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

backends/cadence/aot/export_example.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def export_and_run_model(
104104
file_name: str = "CadenceDemoModel",
105105
eps_error: float = 1e-1,
106106
eps_warn: float = 1e-5,
107+
force_rebuild: bool = False,
107108
):
108109
# create work directory for outputs and model binary
109110
working_dir = tempfile.mkdtemp(dir="/tmp")
@@ -118,4 +119,5 @@ def export_and_run_model(
118119
eps_error=eps_error,
119120
eps_warn=eps_warn,
120121
file_name=file_name,
122+
force_rebuild=force_rebuild,
121123
)

backends/cadence/runtime/executor.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,22 @@ def __init__(
105105
self,
106106
working_dir: str = "",
107107
file_name: str = "CadenceDemoModel",
108+
force_rebuild: bool = False,
108109
):
109110
self.working_dir = working_dir
110111
self.executor_builder = "./backends/cadence/build_cadence_runner.sh"
111112
self.execute_runner = "./cmake-out/backends/cadence/cadence_runner"
112113
self.bundled_program_path: str = f"{file_name}.bpte"
114+
self.force_rebuild = force_rebuild
113115

114116
def __call__(self) -> None:
115-
# build executor
116-
args = self.get_bash_command(self.executor_builder)
117-
logging.info(f"\33[33m{' '.join(args)}\33[0m")
118-
execute(args)
117+
# build executor if not already built or force rebuild requested
118+
if self.force_rebuild or not os.path.isfile(self.execute_runner):
119+
args = self.get_bash_command(self.executor_builder)
120+
logging.info(f"\33[33m{' '.join(args)}\33[0m")
121+
execute(args)
122+
else:
123+
logging.info("Reusing existing runner at %s", self.execute_runner)
119124

120125
# run executor
121126
cmd_args = {

backends/cadence/runtime/runtime.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ def run(
5757
ref_outputs: Optional[Sequence[torch.Tensor]] = None,
5858
working_dir: Optional[str] = None,
5959
file_name: str = "CadenceDemoModel",
60+
force_rebuild: bool = False,
6061
) -> Any:
6162
# Get the Program
6263
program = executorch_prog.executorch_program
@@ -70,7 +71,7 @@ def run(
7071
working_dir = tempfile.mkdtemp(dir="/tmp")
7172

7273
# initialize e2e Executor with executorch_cfg.
73-
executor = Executor(working_dir, file_name=file_name)
74+
executor = Executor(working_dir, file_name=file_name, force_rebuild=force_rebuild)
7475

7576
# run Executor
7677
executor()
@@ -138,9 +139,15 @@ def run_and_compare(
138139
eps_error: float = 1e-1,
139140
eps_warn: float = 1e-5,
140141
file_name: str = "CadenceDemoModel",
142+
force_rebuild: bool = False,
141143
) -> Any:
142144
outputs = run(
143-
executorch_prog, inputs, ref_outputs, working_dir, file_name=file_name
145+
executorch_prog,
146+
inputs,
147+
ref_outputs,
148+
working_dir,
149+
file_name=file_name,
150+
force_rebuild=force_rebuild,
144151
)
145152
compare(outputs, ref_outputs, eps_error=eps_error, eps_warn=eps_warn)
146153

0 commit comments

Comments
 (0)