77from Deeploy .DeeployTypes import NetworkContext , NodeTemplate , OperatorRepresentation
88
99
10- class _MaxPool2DTemplate (NodeTemplate ):
10+ class _MaxPoolTemplate (NodeTemplate ):
1111
1212 def __init__ (self , templateStr ):
1313 super ().__init__ (templateStr )
@@ -28,7 +28,7 @@ def alignToContext(self, ctxt: NetworkContext,
2828 return ctxt , operatorRepresentation , []
2929
3030
31- referenceTemplate = _MaxPool2DTemplate ("""
31+ referenceTemplate = _MaxPoolTemplate ("""
3232<%
3333batchOffsetIn = ch_im_in * dim_im_in_x * dim_im_in_y
3434batchOffsetOut = ch_im_out * dim_im_out_x * dim_im_out_y
@@ -50,3 +50,24 @@ def alignToContext(self, ctxt: NetworkContext,
5050 }
5151END_SINGLE_CORE
5252""" )
53+
54+ reference1DTemplate = _MaxPoolTemplate ("""
55+ <%
56+ batchOffsetIn = ch_im_in * dim_im_in_y
57+ batchOffsetOut = ch_im_out * dim_im_out_y
58+ %>
59+ // 1D MaxPool (Name: ${nodeName}, Op: ${nodeOp})
60+ BEGIN_SINGLE_CORE
61+ ${data_in_type.typeName} ref_${data_out}_${data_in} = ${data_in};
62+ ${data_out_type.typeName} ref_${data_out}_${data_out} = ${data_out};
63+ for (uint32_t n=0; n<${batch}; ++n) {
64+ MaxPool1d_s${data_in_type.referencedType.typeWidth}_s${data_out_type.referencedType.typeWidth}(
65+ ref_${data_out}_${data_in}, ${ch_im_in}, ${dim_im_in_y},
66+ ${dim_kernel_y}, ${stride_y},
67+ ref_${data_out}_${data_out}, ${input_offset}, ${output_offset}
68+ );
69+ ref_${data_out}_${data_in} += ${batchOffsetIn};
70+ ref_${data_out}_${data_out} += ${batchOffsetOut};
71+ }
72+ END_SINGLE_CORE
73+ """ )
0 commit comments