From 2d371ea6446b063455ef007baa96cdf55f4d562f Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <maltanar@gmail.com> Date: Thu, 28 Nov 2019 17:30:04 +0000 Subject: [PATCH] [Test] extend pytest parametrization to simd and pe --- .../fpgadataflow/test_fpgadataflow_fclayer.py | 45 +++++++++---------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/tests/fpgadataflow/test_fpgadataflow_fclayer.py b/tests/fpgadataflow/test_fpgadataflow_fclayer.py index ce37455e2..b88b79cbb 100644 --- a/tests/fpgadataflow/test_fpgadataflow_fclayer.py +++ b/tests/fpgadataflow/test_fpgadataflow_fclayer.py @@ -71,7 +71,13 @@ def prepare_inputs(model, input_tensor, idt): return {"inp": input_tensor} -def create_noactivation_testcases(idt, wdt, mh=8, mw=8): +@pytest.mark.parametrize("wdt", [DataType.BIPOLAR, DataType.INT2]) +@pytest.mark.parametrize("idt", [DataType.BIPOLAR, DataType.INT2]) +@pytest.mark.parametrize("pe", [1, 2, 4]) +@pytest.mark.parametrize("simd", [1, 2, 4]) +def test_fpgadataflow_fclayer_noact(idt, wdt, pe, simd): + mh = 4 + mw = 4 if wdt == DataType.BIPOLAR and idt == DataType.BIPOLAR: odt = DataType.UINT32 else: @@ -81,28 +87,17 @@ def create_noactivation_testcases(idt, wdt, mh=8, mw=8): # generate input data x = gen_finn_dt_tensor(idt, (1, mw)) - # set up layers with different pe and simd - pe_values = [1, int(mh / 2), mh] - simd_values = [1, int(mw / 2), mw] - for pe in pe_values: - for simd in simd_values: - model = make_single_fclayer_modelwrapper(W, pe, simd, wdt, idt, odt) - - # prepare input data - input_dict = prepare_inputs(model, x, idt) - if wdt == DataType.BIPOLAR and idt == DataType.BIPOLAR: - # convert inputs to binary and use xnorpopcountmatmul - y = xp.xnorpopcountmatmul((x + 1) / 2, (W + 1) / 2) - else: - y = np.matmul(x, W) - oshape = model.get_tensor_shape("outp") - y_expected = y.reshape(oshape) - # execute model - y_produced = oxe.execute_onnx(model, input_dict)["outp"] - assert (y_produced.reshape(y_expected.shape) == y_expected).all() - + model = make_single_fclayer_modelwrapper(W, pe, simd, wdt, idt, odt) -@pytest.mark.parametrize("wdt", [DataType.BIPOLAR, DataType.INT2]) -@pytest.mark.parametrize("idt", [DataType.BIPOLAR, DataType.INT2]) -def test_fpgadataflow_fclayer_noact(wdt, idt): - create_noactivation_testcases(idt, wdt) + # prepare input data + input_dict = prepare_inputs(model, x, idt) + if wdt == DataType.BIPOLAR and idt == DataType.BIPOLAR: + # convert inputs to binary and use xnorpopcountmatmul + y = xp.xnorpopcountmatmul((x + 1) / 2, (W + 1) / 2) + else: + y = np.matmul(x, W) + oshape = model.get_tensor_shape("outp") + y_expected = y.reshape(oshape) + # execute model + y_produced = oxe.execute_onnx(model, input_dict)["outp"] + assert (y_produced.reshape(y_expected.shape) == y_expected).all() -- GitLab