Skip to content
Snippets Groups Projects
Commit a02215fc authored by Yaman Umuroglu's avatar Yaman Umuroglu
Browse files

[HLSCustomOp] remove OutputDim as FMPadding attribute, can compute

parent 258f881e
No related branches found
No related tags found
No related merge requests found
...@@ -7,26 +7,39 @@ from finn.util.data_packing import npy_to_rtlsim_input, rtlsim_output_to_npy ...@@ -7,26 +7,39 @@ from finn.util.data_packing import npy_to_rtlsim_input, rtlsim_output_to_npy
class FMPadding_Batch(HLSCustomOp): class FMPadding_Batch(HLSCustomOp):
"""Class that corresponds to finn-hlslib FMPadding_Batch function. """Corresponds to finn-hlslib FMPadding_Batch function.
Implements 'same' padding on a given input image.""" Pads input image by given amount."""
def __init__(self, onnx_node): def __init__(self, onnx_node):
super().__init__(onnx_node) super().__init__(onnx_node)
def get_nodeattr_types(self): def get_nodeattr_types(self):
my_attrs = { my_attrs = {
# spatial size of input images
"ImgDim": ("i", True, 0), "ImgDim": ("i", True, 0),
"OutputDim": ("i", True, 0), # total padding (per dimension) to apply
"Padding": ("i", True, 2), "Padding": ("i", True, 2),
# number of channels in input image
"NumChannels": ("i", True, 0), "NumChannels": ("i", True, 0),
# FINN input datatype # FINN input datatype
"inputDataType": ("s", True, ""), "inputDataType": ("s", True, ""),
# controls distribution of padded pixels
# in case of uneven padding -- see FMPadding fxn
# in hlslib
"PaddingStyle": ("i", False, 2), "PaddingStyle": ("i", False, 2),
# shape describing input vecs per execution
"numInputVectors": ("i", False, 1), "numInputVectors": ("i", False, 1),
} }
my_attrs.update(super().get_nodeattr_types()) my_attrs.update(super().get_nodeattr_types())
return my_attrs return my_attrs
def get_padded_odim(self):
"Return the padded spatial size of the output."
idim = self.get_nodeattr("ImgDim")
pad = self.get_nodeattr("Padding")
return idim + pad
def get_normal_input_shape(self): def get_normal_input_shape(self):
idim = self.get_nodeattr("ImgDim") idim = self.get_nodeattr("ImgDim")
num_ch = self.get_nodeattr("NumChannels") num_ch = self.get_nodeattr("NumChannels")
...@@ -35,7 +48,7 @@ class FMPadding_Batch(HLSCustomOp): ...@@ -35,7 +48,7 @@ class FMPadding_Batch(HLSCustomOp):
return ishape return ishape
def get_normal_output_shape(self): def get_normal_output_shape(self):
odim = self.get_nodeattr("OutputDim") odim = self.get_padded_odim()
num_ch = self.get_nodeattr("NumChannels") num_ch = self.get_nodeattr("NumChannels")
oshape = (1, odim, odim, num_ch) oshape = (1, odim, odim, num_ch)
...@@ -124,7 +137,7 @@ class FMPadding_Batch(HLSCustomOp): ...@@ -124,7 +137,7 @@ class FMPadding_Batch(HLSCustomOp):
#define Padding1 {}\n#define NumChannels1 {}\n #define Padding1 {}\n#define NumChannels1 {}\n
#define PaddingStyle1 {}\n#define numReps {}\n""".format( #define PaddingStyle1 {}\n#define numReps {}\n""".format(
self.get_nodeattr("ImgDim"), self.get_nodeattr("ImgDim"),
self.get_nodeattr("OutputDim"), self.get_padded_odim(),
self.get_nodeattr("Padding"), self.get_nodeattr("Padding"),
self.get_nodeattr("NumChannels"), self.get_nodeattr("NumChannels"),
self.get_nodeattr("PaddingStyle"), self.get_nodeattr("PaddingStyle"),
......
...@@ -91,7 +91,6 @@ class InferConvInpGen(Transformation): ...@@ -91,7 +91,6 @@ class InferConvInpGen(Transformation):
domain="finn", domain="finn",
backend="fpgadataflow", backend="fpgadataflow",
ImgDim=ifm_dim, ImgDim=ifm_dim,
OutputDim=odim_padding,
Padding=2 * pad, Padding=2 * pad,
NumChannels=ifm_ch, NumChannels=ifm_ch,
inputDataType=dt.name, inputDataType=dt.name,
......
...@@ -42,7 +42,6 @@ def make_single_fmpadding_modelwrapper(idim, padding, num_ch, idt, pad_style): ...@@ -42,7 +42,6 @@ def make_single_fmpadding_modelwrapper(idim, padding, num_ch, idt, pad_style):
domain="finn", domain="finn",
backend="fpgadataflow", backend="fpgadataflow",
ImgDim=idim, ImgDim=idim,
OutputDim=odim,
Padding=padding, Padding=padding,
NumChannels=num_ch, NumChannels=num_ch,
inputDataType=str(idt.name), inputDataType=str(idt.name),
......
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