From 0b1e14df096f09430f5dbc97e6218b59860cfbf4 Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <yamanu@xilinx.com> Date: Tue, 7 Sep 2021 23:12:32 +0200 Subject: [PATCH] [Build] add new folding_two_pass_relaxation option --- src/finn/builder/build_dataflow_config.py | 7 +++++++ src/finn/builder/build_dataflow_steps.py | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/finn/builder/build_dataflow_config.py b/src/finn/builder/build_dataflow_config.py index 4a112699e..7a7039839 100644 --- a/src/finn/builder/build_dataflow_config.py +++ b/src/finn/builder/build_dataflow_config.py @@ -172,6 +172,13 @@ class DataflowBuildConfig: #: that will override the target_fps setting here. target_fps: Optional[int] = None + #: (Optional) Use two-pass relaxation for folding, only relevant if target_fps + #: is set. If enabled, parallelization will internally run a second time if the + #: target cycles from the first pass could not be achieved, instead using the + #: achievable target to obtain a balanced pipeline. If disabled, this can be + #: useful for decreasing the latency (even though throughput won't increase). + folding_two_pass_relaxation: Optional[bool] = True + #: (Optional) At which steps the generated intermediate output model #: will be verified. See documentation of VerificationStepType for #: available options. diff --git a/src/finn/builder/build_dataflow_steps.py b/src/finn/builder/build_dataflow_steps.py index ce0fc4984..b19f43c9f 100644 --- a/src/finn/builder/build_dataflow_steps.py +++ b/src/finn/builder/build_dataflow_steps.py @@ -232,7 +232,11 @@ def step_target_fps_parallelization(model: ModelWrapper, cfg: DataflowBuildConfi target_cycles_per_frame = cfg._resolve_cycles_per_frame() if target_cycles_per_frame is not None: model = model.transform( - SetFolding(target_cycles_per_frame, mvau_wwidth_max=cfg.mvau_wwidth_max) + SetFolding( + target_cycles_per_frame, + mvau_wwidth_max=cfg.mvau_wwidth_max, + two_pass_relaxation=cfg.folding_two_pass_relaxation, + ) ) return model -- GitLab