Skip to content
Snippets Groups Projects
Commit 4b5f0d59 authored by auphelia's avatar auphelia
Browse files

[Test] Added test cases for slidingwindow (SIMD = IFMChannels

parent 2d13e9ff
No related branches found
No related tags found
No related merge requests found
import pytest
import numpy as np import numpy as np
from onnx import TensorProto, helper from onnx import TensorProto, helper
...@@ -37,7 +39,33 @@ def im2col_indices(x, k, stride): ...@@ -37,7 +39,33 @@ def im2col_indices(x, k, stride):
cols = x[:, l, i, j] cols = x[:, l, i, j]
C = x.shape[1] C = x.shape[1]
# cols = cols.transpose(0, 2, 1)
cols = cols.transpose(1, 2, 0).reshape(k * k * C, -1) cols = cols.transpose(1, 2, 0).reshape(k * k * C, -1)
cols = cols.transpose(1, 0)
# rearranging the output so it matches with finn-hlslib function
# swapping the columns according to the input channel
# if C > 1 :
parts = {}
for ch in range(C):
parts[ch] = []
for i in range(cols.shape[1]):
if i % C == 0:
parts[0].append(i)
elif (i + (C - 1)) % C == 0:
parts[1].append(i)
elif (i + (C - 2)) % C == 0:
parts[2].append(i)
elif (i + (C - 3)) % C == 0:
parts[3].append(i)
permutation = []
for i in parts:
for num in parts[i]:
permutation.append(num)
i = np.argsort(permutation)
cols = cols[:, i]
return cols return cols
...@@ -96,16 +124,23 @@ def prepare_inputs(input_tensor, idt): ...@@ -96,16 +124,23 @@ def prepare_inputs(input_tensor, idt):
return {"inp": input_tensor} return {"inp": input_tensor}
def test_fpgadataflow_slidingwindow(): # input datatype
idt = DataType.BIPOLAR @pytest.mark.parametrize("idt", [DataType.BIPOLAR, DataType.INT2])
k = 2 # kernel size
stride = 1 @pytest.mark.parametrize("k", [2, 4])
ifm_ch = 1 # input dimension
ifm_dim = 3 @pytest.mark.parametrize("ifm_dim", [4, 6, 8])
# input channels
@pytest.mark.parametrize("ifm_ch", [1, 2, 3, 4])
# Stride
@pytest.mark.parametrize("stride", [1, 2])
def test_fpgadataflow_slidingwindow(idt, k, ifm_dim, ifm_ch, stride):
simd = ifm_ch
ofm_dim = int(((ifm_dim - k) / stride) + 1) ofm_dim = int(((ifm_dim - k) / stride) + 1)
simd = 1
x = gen_finn_dt_tensor(idt, (1, ifm_ch, ifm_dim, ifm_dim)) x = gen_finn_dt_tensor(idt, (1, ifm_ch, ifm_dim, ifm_dim))
# x_values = np
model = make_single_slidingwindow_modelwrapper( model = make_single_slidingwindow_modelwrapper(
k, ifm_ch, ifm_dim, ofm_dim, simd, stride, idt k, ifm_ch, ifm_dim, ofm_dim, simd, stride, idt
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment