diff --git a/requirements.txt b/requirements.txt index 2e75bb44be1dcb1e49f77545d9564604141edbea..b1f36d3786336700530bae6c60bcd7b69a99bfdf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,10 +9,10 @@ onnx==1.7.0 onnxoptimizer onnxruntime==1.4.0 pre-commit==2.6.0 +protobuf==3.20.1 pyscaffold==3.2.1 scipy==1.5.2 setupext-janitor>=1.1.2 toposort==1.5 vcdvcd==1.0.5 wget==3.2 -protobuf==3.20.1 \ No newline at end of file diff --git a/src/finn/builder/build_dataflow_config.py b/src/finn/builder/build_dataflow_config.py index 807fd706860d7e4667107ddd2ed46ea2b123c3ec..106c221203c6f2a64ce27f2fdf850c1d73c90b4c 100644 --- a/src/finn/builder/build_dataflow_config.py +++ b/src/finn/builder/build_dataflow_config.py @@ -340,7 +340,7 @@ class DataflowBuildConfig: if self.target_fps is None: return None else: - n_clock_cycles_per_sec = 10 ** 9 / self.synth_clk_period_ns + n_clock_cycles_per_sec = 10**9 / self.synth_clk_period_ns n_cycles_per_frame = n_clock_cycles_per_sec / self.target_fps return int(n_cycles_per_frame) diff --git a/src/finn/builder/build_dataflow_steps.py b/src/finn/builder/build_dataflow_steps.py index c977f15e7090f5cae633a013f5eb9e6b3dd34dd2..bf3701f12dc8d95992b31abebcc2b0323ef57135 100644 --- a/src/finn/builder/build_dataflow_steps.py +++ b/src/finn/builder/build_dataflow_steps.py @@ -397,7 +397,7 @@ def step_generate_estimate_reports(model: ModelWrapper, cfg: DataflowBuildConfig model = model.transform(AnnotateCycles()) estimate_network_performance = model.analysis(dataflow_performance) # add some more metrics to estimated performance - n_clock_cycles_per_sec = (10 ** 9) / cfg.synth_clk_period_ns + n_clock_cycles_per_sec = (10**9) / cfg.synth_clk_period_ns est_fps = n_clock_cycles_per_sec / estimate_network_performance["max_cycles"] estimate_network_performance["estimated_throughput_fps"] = est_fps est_latency_ns = ( @@ -599,7 +599,7 @@ def step_out_of_context_synthesis(model: ModelWrapper, cfg: DataflowBuildConfig) estimate_network_performance = model.analysis(dataflow_performance) # add some more metrics to estimated performance - n_clock_cycles_per_sec = float(ooc_res_dict["fmax_mhz"]) * (10 ** 6) + n_clock_cycles_per_sec = float(ooc_res_dict["fmax_mhz"]) * (10**6) est_fps = n_clock_cycles_per_sec / estimate_network_performance["max_cycles"] ooc_res_dict["estimated_throughput_fps"] = est_fps with open(report_dir + "/ooc_synth_and_timing.json", "w") as f: diff --git a/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py b/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py index 68cd1ff9ea680e157f59353d0c9d05afc3d9d6d7..896e7c2925e340455f98344d1275d9368f701ed9 100644 --- a/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py +++ b/src/finn/custom_op/fpgadataflow/streamingfclayer_batch.py @@ -358,8 +358,8 @@ class StreamingFCLayer_Batch(HLSCustomOp): if noact == 0: odt = self.get_output_datatype() B = odt.bitwidth() - thr_luts = (2 ** B - 1) * acc_bits * math.ceil(self.calc_tmem() / 64) - comp_luts = (2 ** B - 1) * acc_bits + thr_luts = (2**B - 1) * acc_bits * math.ceil(self.calc_tmem() / 64) + comp_luts = (2**B - 1) * acc_bits return int( c0 diff --git a/src/finn/custom_op/fpgadataflow/vector_vector_activate_batch.py b/src/finn/custom_op/fpgadataflow/vector_vector_activate_batch.py index e0f789a8883aad83ed8c8b37a16392308bc720cc..f50c5d1ef61d1677d2c2e394c43ebd6354a5331e 100644 --- a/src/finn/custom_op/fpgadataflow/vector_vector_activate_batch.py +++ b/src/finn/custom_op/fpgadataflow/vector_vector_activate_batch.py @@ -694,8 +694,8 @@ class Vector_Vector_Activate_Batch(HLSCustomOp): if noact == 0: odt = self.get_output_datatype() B = odt.bitwidth() - thr_luts = (2 ** B - 1) * acc_bits * math.ceil(self.calc_tmem() / 64) - comp_luts = (2 ** B - 1) * acc_bits + thr_luts = (2**B - 1) * acc_bits * math.ceil(self.calc_tmem() / 64) + comp_luts = (2**B - 1) * acc_bits return int(c0 + c1 * (P * (mult_luts + acc_luts + thr_luts + comp_luts)) + c2) diff --git a/src/finn/transformation/fpgadataflow/set_fifo_depths.py b/src/finn/transformation/fpgadataflow/set_fifo_depths.py index 39eb049565475b462ea0df9d88b46e3598e6cdd9..ce7cf7bc589fae7fb6c8785b51cf45514f49c5a0 100644 --- a/src/finn/transformation/fpgadataflow/set_fifo_depths.py +++ b/src/finn/transformation/fpgadataflow/set_fifo_depths.py @@ -222,7 +222,7 @@ class InsertAndSetFIFODepths(Transformation): fpgapart, clk_ns=10.0, max_qsrl_depth=256, - max_depth=2 ** 14, + max_depth=2**14, swg_exception=True, vivado_ram_style="auto", ): diff --git a/src/finn/transformation/qonnx/infer_quant_avg_pool_2d.py b/src/finn/transformation/qonnx/infer_quant_avg_pool_2d.py index faad31fa06e76b245f25b6f0aa583fec5c0da29a..c234bd38d9679f72b6df73e81df57fba3e8d4554 100644 --- a/src/finn/transformation/qonnx/infer_quant_avg_pool_2d.py +++ b/src/finn/transformation/qonnx/infer_quant_avg_pool_2d.py @@ -230,7 +230,7 @@ class AvgPoolAndTruncToQuantAvgPool(Transformation): # 7c2603a95e90e4de2575020e575c24eab6a15889/src/finn/custom_op/ # general/quantavgpool2d.py#L94 ibits = math.floor( - math.log(2 ** trunc_in_bits / (k_s * k_s), 2) + math.log(2**trunc_in_bits / (k_s * k_s), 2) ) # Get sign signed = _get_signed_from_upstream(model, t_node) diff --git a/src/finn/transformation/qonnx/qonnx_activation_handlers.py b/src/finn/transformation/qonnx/qonnx_activation_handlers.py index 3336b1eee7fa9d54092cd56b9ba0edaf9d0884b1..c8bde7fea8ae8195001a7eccfd48baa4c48997ae 100644 --- a/src/finn/transformation/qonnx/qonnx_activation_handlers.py +++ b/src/finn/transformation/qonnx/qonnx_activation_handlers.py @@ -333,7 +333,7 @@ class QuantReluHandler(QuantActBaseHandler): # Calculate thersholds, see: https://github.com/Xilinx/brevitas/blob/ # a5bfd6dc5e030f0047ac1ee47932b60e8e873e17/src/brevitas/export/ # onnx/finn/handler/act.py#L21 - num_distinct_values = 2 ** bit_width + num_distinct_values = 2**bit_width num_thresholds = int(num_distinct_values - 1) flat_scale = quant_scale.flatten().astype(np.float32) num_scale_channels = flat_scale.shape[0] @@ -468,9 +468,9 @@ class QuantIdentityHandler(QuantActBaseHandler): return thresholds else: if narrow: - num_distinct_values = 2 ** bit_width - 1 + num_distinct_values = 2**bit_width - 1 else: - num_distinct_values = 2 ** bit_width + num_distinct_values = 2**bit_width num_thresholds = int(num_distinct_values - 1) flat_scale = quant_scale.flatten() diff --git a/tests/end2end/test_end2end_bnn_pynq.py b/tests/end2end/test_end2end_bnn_pynq.py index 1fddc7c1c26a0ba04d5849809ccf59b0a926a509..1d7d5e3e9a939b62a938c6f23e347e3d15a64663 100644 --- a/tests/end2end/test_end2end_bnn_pynq.py +++ b/tests/end2end/test_end2end_bnn_pynq.py @@ -765,7 +765,7 @@ class TestEnd2End: ret = dict() # try a range of batch sizes, some may fail due to insufficient DMA # buffers - bsize_range_in = [8 ** i for i in range(5)] + bsize_range_in = [8**i for i in range(5)] bsize_range = [] for bsize in bsize_range_in: res = throughput_test_remote(model, bsize) diff --git a/tests/fpgadataflow/test_fpgadataflow_vvau.py b/tests/fpgadataflow/test_fpgadataflow_vvau.py index 6f39994bf27594a063a1e66c5bba7867eaabef6e..9eb3a7f4514e610d79bb83cc62a7561a33ced543 100644 --- a/tests/fpgadataflow/test_fpgadataflow_vvau.py +++ b/tests/fpgadataflow/test_fpgadataflow_vvau.py @@ -62,8 +62,8 @@ def _infer_sparse_weight_tensor(W_conv, k_h, k_w, channels): def _calculate_dot_prod_range(dt_a, dt_b, len): """Returns the (min,max) values a dot product between two (un)signed vectors of types dt_a and dt_b of len elements can take.""" - min_prod = 2 ** 30 - max_prod = -(2 ** 30) + min_prod = 2**30 + max_prod = -(2**30) for a_val in [dt_a.min(), dt_a.max()]: for b_val in [dt_b.min(), dt_b.max()]: prod = a_val * b_val * len diff --git a/tests/fpgadataflow/test_set_folding.py b/tests/fpgadataflow/test_set_folding.py index 66fd5b43a1b8b8c8986bf9c9b9d0e9efd7a744a6..492f208671f4622d189c48ece874740a68b69072 100644 --- a/tests/fpgadataflow/test_set_folding.py +++ b/tests/fpgadataflow/test_set_folding.py @@ -109,7 +109,7 @@ def make_multi_fclayer_model(ch, wdt, adt, tdt, nnodes): # desired frames per second -@pytest.mark.parametrize("target_fps", [30, 10 ** 5, 10 ** 7]) +@pytest.mark.parametrize("target_fps", [30, 10**5, 10**7]) # target chip or board @pytest.mark.parametrize("platform", ["Pynq-Z1", "Ultra96", "U200"]) def test_set_folding(target_fps, platform): @@ -126,7 +126,7 @@ def test_set_folding(target_fps, platform): dataflow_model = load_test_checkpoint_or_skip(dataflow_model_filename) clk_ns = 5 - target_cycles_per_frame = int((10 ** 9 / clk_ns) / target_fps) + target_cycles_per_frame = int((10**9 / clk_ns) / target_fps) dataflow_model = dataflow_model.transform(SetFolding(target_cycles_per_frame)) exp_cycles_dict = dataflow_model.analysis(exp_cycles_per_layer)