Skip to content

Commit 4715265

Browse files
authored
Support for MaxPool1D and RQSConv1D for PULPOpen (#146)
Add integer MaxPool1D for Generic platform and RQSConv1D support for PULPOpen, with corresponding kernel tests. ## Added - MaxPool1D fp32 kernel and template for Generic platform - Test for MaxPool1D fp32 and int8 - RQSConv1 template and tiling contraints for PULP Platform - Test for RQSConv1D int8 ## Changed - renamed MaxPool2D test from MaxPool to MaxPool/Regular_2D for both Integer and FP32 ## Fixed - im2col buffer size in Conv1d template
1 parent 8595539 commit 4715265

42 files changed

Lines changed: 656 additions & 111 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ This file contains the changelog for the Deeploy project. The changelog is divid
55

66

77
### List of Pull Requests
8+
- Support for MaxPool1D and RQSConv1D for PULPOpen [#146](https://github.com/pulp-platform/Deeploy/pull/146)
89
- Use Pre-Commit in CI [#159](https://github.com/pulp-platform/Deeploy/pull/159)
910
- Deeploy-GAP9 Platform [#143](https://github.com/pulp-platform/Deeploy/pull/143)
1011
- Update CLI interface Across Project, Fix Tutorial, and Remove Legacy Test [#157](https://github.com/pulp-platform/Deeploy/pull/157)
1112

1213
### Added
14+
- Add integer MaxPool1D for Generic platform and RQSConv1D support for PULPOpen, with corresponding kernel tests.
1315
- Added GAP9 Platform Support: Deployer, Bindings, Templates, Tiler, DMA (L3Dma/MchanDma), target library, CI workflows
1416

1517
### Changed
@@ -19,6 +21,7 @@ This file contains the changelog for the Deeploy project. The changelog is divid
1921
- Aligned CLI commands across the project
2022

2123
### Fixed
24+
- im2col buffer size in Conv1d template
2225
- Fix missing dependency in pre-commit-config
2326
- Fix test paths in Deeploy 101 tutorial
2427

Deeploy/Targets/GAP9/Bindings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from Deeploy.Targets.PULPOpen.DataTypes import PULPDMAFuture
3737
from Deeploy.Targets.PULPOpen.Templates import ConvTemplate, DMASliceTemplate, FloatAddTemplate, FloatConvTemplate, \
3838
FloatGELUTemplate, FloatGemmTemplate, FloatLayernormTemplate, FloatMatMulTemplate, FloatMaxPoolTemplate, \
39-
FloatMulTemplate, FloatReluTemplate, FloatSoftmaxTemplate, GEMMTemplate, MatrixVectorTemplate, MaxPool2DTemplate, \
39+
FloatMulTemplate, FloatReluTemplate, FloatSoftmaxTemplate, GEMMTemplate, MatrixVectorTemplate, MaxPoolTemplate, \
4040
MulTemplate, ReduceMeanTemplate, RequantShiftTemplate, ReshapeTemplate, RQAddTemplate, RQSiHardswishTemplate, \
4141
SGDTemplate, SoftmaxCrossEntropyLossTemplate, TallGEMMTemplate, TransposeTemplate, UniformRequantShiftTemplate, \
4242
iRMSNormTemplate, iSoftmaxTemplate
@@ -227,7 +227,7 @@
227227

228228
GAP9MaxPool2DBindings = [
229229
NodeBinding(PULPMaxPoolChecker([PointerClass(type)], [PointerClass(type)]),
230-
MaxPool2DTemplate.PULPMaxPool2D_8_Template, GAP9Transformer) for type in [int8_t, uint8_t]
230+
MaxPoolTemplate.PULPMaxPool2D_8_Template, GAP9Transformer) for type in [int8_t, uint8_t]
231231
] + [
232232
NodeBinding(PULPMaxPoolChecker([PointerClass(float32_t)], [PointerClass(float32_t)]),
233233
FloatMaxPoolTemplate.referenceTemplate, GAP9Transformer)

Deeploy/Targets/GAP9/Platform.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
SoftmaxCrossEntropyLossGradParser, SoftmaxCrossEntropyLossParser, SoftmaxGradParser, SoftmaxParser, \
3838
TransposeParser, UniformRequantShiftParser, UnsqueezeParser, iHardswishParser, iRMSNormParser, iSoftmaxParser
3939
from Deeploy.Targets.Generic.Templates import AllocateTemplate as BasicAllocateTemplate
40-
from Deeploy.Targets.PULPOpen.Bindings import BasicDequantBindings, BasicQuantBindings, PULPConv1DBinding, \
41-
PULPDMASliceBindings, PULPDWConv1DBinding, PULPReduceMeanBindings, PULPSliceBindings
40+
from Deeploy.Targets.PULPOpen.Bindings import BasicDequantBindings, BasicQuantBindings, PULPDMASliceBindings, \
41+
PULPDWConv1DBinding, PULPReduceMeanBindings, PULPRQSConv1DBindings, PULPSliceBindings
4242
from Deeploy.Targets.PULPOpen.Layers import PULPRQSConvLayer, PULPRQSGEMMLayer
4343
from Deeploy.Targets.PULPOpen.Parsers import PULPConv1DParser, PULPConv2DParser, PULPDWConv1DParser, \
4444
PULPDWConv2DParser, PULPFPConv2DParser, PULPFPDWConv2DParser, PULPGEMMParser, PULPMatrixVecParser, \
@@ -63,7 +63,7 @@
6363
GAP9_MatMulMapper = NodeMapper(MatMulParser(), GAP9MatMulTilingReadyBindings)
6464
GAP9_RQIntegerDivMapper = NodeMapper(RQIntegerDivParser(), [BasicRQIntegerDivBinding])
6565
GAP9_RQGELU_int8_Mapper = NodeMapper(RQSiGELUParser(), GAP9iRQSGELUTilingReadyBindings)
66-
GAP9_Conv1DMapper = NodeMapper(PULPConv1DParser(), [PULPConv1DBinding])
66+
GAP9_Conv1DMapper = NodeMapper(PULPConv1DParser(), PULPRQSConv1DBindings)
6767
GAP9_DWConv1DMapper = NodeMapper(PULPDWConv1DParser(), [PULPDWConv1DBinding])
6868
GAP9_FPConv2DMapper = NodeMapper(PULPFPConv2DParser(), GAP9Conv2DTilingReadyBindings)
6969
GAP9_Conv2DMapper = NodeMapper(PULPConv2DParser(), GAP9RQSConv2DTilingReadyBindings)

Deeploy/Targets/Generic/Bindings.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,15 @@
165165
]
166166

167167
BasicMaxPool1DBindings = [
168+
NodeBinding(MaxPoolChecker([PointerClass(int8_t)], [PointerClass(int8_t)]), MaxPoolTemplate.reference1DTemplate,
169+
BasicTransformer)
170+
] + [
168171
NodeBinding(MaxPoolChecker([PointerClass(type)], [PointerClass(type)]), FloatMaxPoolTemplate.reference1DTemplate,
169172
BasicTransformer) for type in FloatDataTypes
170173
]
171174

172175
BasicMaxPool2DBindings = [
173-
NodeBinding(MaxPoolChecker([PointerClass(int8_t)], [PointerClass(int8_t)]), MaxPoolTemplate.referenceTemplate,
176+
NodeBinding(MaxPoolChecker([PointerClass(int8_t)], [PointerClass(int8_t)]), MaxPoolTemplate.reference2DTemplate,
174177
BasicTransformer)
175178
] + [
176179
NodeBinding(MaxPoolChecker([PointerClass(float32_t)], [PointerClass(float32_t)]),

Deeploy/Targets/Generic/Parsers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,13 @@ def __init__(self):
193193
def parseNode(self, node: gs.Node) -> bool:
194194

195195
ret = all([
196-
'ceil_mode' in node.attrs, 'kernel_shape' in node.attrs, 'pads' in node.attrs, 'strides' in node.attrs,
196+
'ceil_mode' in node.attrs,
197+
'kernel_shape' in node.attrs,
198+
'pads' in node.attrs,
199+
'strides' in node.attrs,
197200
len(node.inputs) == 1,
198-
len(node.outputs) >= 1
201+
len(node.outputs) >= 1,
202+
all([stride > 0 for stride in node.attrs['strides']]),
199203
])
200204

201205
if ret:

Deeploy/Targets/Generic/Platform.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
ITAMaxMapper = NodeMapper(ITAMaxParser(), [BasicITASoftmaxBinding])
5151
ITAPartialMaxMapper = NodeMapper(ITAPartialMaxParser(), [BasicITAPartialSoftmaxBinding])
5252
MatMulMapper = NodeMapper(MatMulParser(), BasicMatMulBindings)
53-
MaxPoolMapper = NodeMapper(GenericMaxPool2DParser(), BasicMaxPool2DBindings)
53+
MaxPool2DMapper = NodeMapper(GenericMaxPool2DParser(), BasicMaxPool2DBindings)
5454
MaxPool1DMapper = NodeMapper(MaxPool1DParser(), BasicMaxPool1DBindings)
5555
MulMapper = NodeMapper(MulParser(), BasicMulBindings)
5656
PowMapper = NodeMapper(PowParser(), BasicPowBindings)
@@ -99,7 +99,7 @@
9999
'ITAPartialMax': ITAMaxLayer([ITAPartialMaxMapper]),
100100
'MatMul': GEMMLayer([MatMulMapper]),
101101
'MatMulInteger': MatMulLayer([MatMulMapper]),
102-
'MaxPool': MaxPoolLayer([MaxPool1DMapper, MaxPoolMapper]),
102+
'MaxPool': MaxPoolLayer([MaxPool1DMapper, MaxPool2DMapper]),
103103
'Mul': MulLayer([MulMapper]),
104104
'Pow': PowLayer([PowMapper]),
105105
'Sqrt': SqrtLayer([SqrtMapper]),

Deeploy/Targets/Generic/Templates/MaxPoolTemplate.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from 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+
reference2DTemplate = _MaxPoolTemplate("""
3232
<%
3333
batchOffsetIn = ch_im_in * dim_im_in_x * dim_im_in_y
3434
batchOffsetOut = ch_im_out * dim_im_out_x * dim_im_out_y
@@ -50,3 +50,24 @@ def alignToContext(self, ctxt: NetworkContext,
5050
}
5151
END_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+
""")

Deeploy/Targets/PULPOpen/Bindings.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from Deeploy.Targets.PULPOpen.Templates import ConvTemplate, DMASliceTemplate, FloatAddTemplate, FloatConvTemplate, \
3131
FloatGELUTemplate, FloatGemmTemplate, FloatLayernormTemplate, FloatMatMulTemplate, FloatMaxPoolTemplate, \
3232
FloatMulTemplate, FloatReduceMeanTemplate, FloatReluTemplate, FloatSoftmaxTemplate, GEMMTemplate, \
33-
MatrixVectorTemplate, MaxPool2DTemplate, MulTemplate, ReduceMeanTemplate, RequantShiftTemplate, ReshapeTemplate, \
33+
MatrixVectorTemplate, MaxPoolTemplate, MulTemplate, ReduceMeanTemplate, RequantShiftTemplate, ReshapeTemplate, \
3434
RQAddTemplate, RQSiHardswishTemplate, SGDTemplate, SoftmaxCrossEntropyLossTemplate, TallGEMMTemplate, \
3535
TransposeTemplate, UniformRequantShiftTemplate, iRMSNormTemplate, iSoftmaxTemplate
3636
from Deeploy.Targets.PULPOpen.TypeCheckers import PULPConvChecker, PULPLinearChecker, PULPMaxPoolChecker, \
@@ -265,19 +265,29 @@
265265

266266
PULPRQSGEMMBindings = PULPRQSGEMM_8_Binding
267267

268+
PULPMaxPool1DBindings = [
269+
NodeBinding(PULPMaxPoolChecker([PointerClass(type)], [PointerClass(type)]),
270+
MaxPoolTemplate.PULPMaxPool1D_8_Template, ForkTransformer) for type in [int8_t, uint8_t]
271+
]
272+
268273
PULPMaxPool2DBindings = [
269274
NodeBinding(PULPMaxPoolChecker([PointerClass(type)], [PointerClass(type)]),
270-
MaxPool2DTemplate.PULPMaxPool2D_8_Template, ForkTransformer) for type in [int8_t, uint8_t]
275+
MaxPoolTemplate.PULPMaxPool2D_8_Template, ForkTransformer) for type in [int8_t, uint8_t]
271276
] + [
272277
NodeBinding(PULPMaxPoolChecker([PointerClass(float32_t)], [PointerClass(float32_t)]),
273278
FloatMaxPoolTemplate.referenceTemplate, ForkTransformer)
274279
]
275280

276-
PULPConv1DBinding = NodeBinding(
277-
PULPConvChecker(
278-
[PointerClass(int8_t), PointerClass(int8_t),
279-
PointerClass(int32_t),
280-
PointerClass(int32_t)], [PointerClass(int8_t)]), ConvTemplate.PULPConv1D_8_Template, ForkTransformer)
281+
PULPRQSConv1DBindings = [
282+
NodeBinding(
283+
PULPConvChecker([PointerClass(_type),
284+
PointerClass(int8_t),
285+
PointerClass(int32_t),
286+
PointerClass(int32_t)], [PointerClass(_type)]),
287+
ConvTemplate.PULPConv1D_8_Template,
288+
ForkTransformer,
289+
) for _type in (int8_t, uint8_t)
290+
]
281291

282292
PULPDWConv1DBinding = NodeBinding(
283293
PULPConvChecker(

Deeploy/Targets/PULPOpen/Platform.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,18 @@
1919
RQSiHardswishLayer, SGDLayer, SliceLayer, SoftmaxCrossEntropyLossGradLayer, SoftmaxCrossEntropyLossLayer, \
2020
SoftmaxGradLayer, SoftmaxLayer, TransposeLayer, iHardswishLayer, iRMSNormLayer
2121
from Deeploy.Targets.Generic.Parsers import AddParser, ConcatParser, DequantParser, FlattenParser, GatherParser, \
22-
GELUGradParser, GELUParser, GEMMParser, LayerNormGradParser, LayerNormParser, MatMulParser, MaxPool2DParser, \
23-
MulParser, Pad1DParser, Pad2DParser, QuantParser, ReduceSumParser, ReluParser, RequantShiftParser, ReshapeParser, \
24-
RQAddParser, RQIntegerDivParser, RQSiGELUParser, RQSiHardswishParser, SGDParser, SliceParser, \
25-
SoftmaxCrossEntropyLossGradParser, SoftmaxCrossEntropyLossParser, SoftmaxGradParser, SoftmaxParser, \
26-
TransposeParser, UniformRequantShiftParser, UnsqueezeParser, iHardswishParser, iRMSNormParser, iSoftmaxParser
22+
GELUGradParser, GELUParser, GEMMParser, LayerNormGradParser, LayerNormParser, MatMulParser, MaxPool1DParser, \
23+
MaxPool2DParser, MulParser, Pad1DParser, Pad2DParser, QuantParser, ReduceSumParser, ReluParser, \
24+
RequantShiftParser, ReshapeParser, RQAddParser, RQIntegerDivParser, RQSiGELUParser, RQSiHardswishParser, \
25+
SGDParser, SliceParser, SoftmaxCrossEntropyLossGradParser, SoftmaxCrossEntropyLossParser, SoftmaxGradParser, \
26+
SoftmaxParser, TransposeParser, UniformRequantShiftParser, UnsqueezeParser, iHardswishParser, iRMSNormParser, \
27+
iSoftmaxParser
2728
from Deeploy.Targets.Generic.Templates import AllocateTemplate as BasicAllocateTemplate
2829
from Deeploy.Targets.Generic.TopologyOptimizationPasses.Passes import DequantPatternPass, IntegerDivRequantMergePass, \
2930
MergeConstAddAndRequantPass, MergeTrueIntegerDivRequantShiftPass, QuantPatternPass, RQSSplitPass, \
3031
SkipEmptyConcatPass, SkipUnityRequantPass, iGELURequantMergePass, iHardswishRequantMergePass
31-
from Deeploy.Targets.PULPOpen.Bindings import BasicDequantBindings, BasicQuantBindings, PULPConv1DBinding, \
32-
PULPDMASliceBindings, PULPDWConv1DBinding
32+
from Deeploy.Targets.PULPOpen.Bindings import BasicDequantBindings, BasicQuantBindings, PULPDMASliceBindings, \
33+
PULPDWConv1DBinding
3334
from Deeploy.Targets.PULPOpen.Layers import PULPRQSConvLayer, PULPRQSGEMMLayer
3435
from Deeploy.Targets.PULPOpen.Parsers import PULPConv1DParser, PULPConv2DParser, PULPDWConv1DParser, \
3536
PULPDWConv2DParser, PULPFPConv2DParser, PULPFPDWConv2DParser, PULPGEMMParser, PULPMatrixVecParser, \
@@ -40,14 +41,15 @@
4041
PULPFPGELUGradTilingReadyBindings, PULPFPGELUTilingReadyBindings, PULPFPGEMMTilingReadyBindings, \
4142
PULPGatherTilingReadyBindings, PULPiHardswishTilingReadyBindings, PULPiRMSNormTilingReadyBindings, \
4243
PULPiRQSGELUTilingReadyBindings, PULPLayernormGradTilingReadyBindings, PULPLayernormTilingReadyBindings, \
43-
PULPMatMulTilingReadyBindings, PULPMaxPool2DTilingReadyBindings, PULPMulTilingReadyBindings, \
44-
PULPReduceMeanTilingReadyBindings, PULPReduceSumTilingReadyBindings, PULPReluTilingReadyBindings, \
45-
PULPRQAddTilingReadyBindings, PULPRQSConv2DTilingReadyBindings, PULPRQSDWConv2DTilingReadyBindings, \
46-
PULPRQSGEMMTilingReadyBindings, PULPRQSiHardswishTilingReadyBindings, PULPRQSMatrixVecTilingReadyBindings, \
47-
PULPRQSTallGEMMTilingReadyBindings, PULPRQSTilingReadyBindings, PULPSGDTilingReadyBindings, \
48-
PULPSliceTilingReadyBindings, PULPSoftmaxCrossEntropyGradTilingReadyBindings, \
49-
PULPSoftmaxCrossEntropyTilingReadyBindings, PULPSoftmaxGradTilingReadyBindings, PULPSoftmaxTilingReadyBindings, \
50-
PULPTransposeTilingReadyBindings, PULPUniformRQSTilingReadyBindings
44+
PULPMatMulTilingReadyBindings, PULPMaxPool1DTilingReadyBindings, PULPMaxPool2DTilingReadyBindings, \
45+
PULPMulTilingReadyBindings, PULPReduceMeanTilingReadyBindings, PULPReduceSumTilingReadyBindings, \
46+
PULPReluTilingReadyBindings, PULPRQAddTilingReadyBindings, PULPRQSConv1DTilingReadyBindings, \
47+
PULPRQSConv2DTilingReadyBindings, PULPRQSDWConv2DTilingReadyBindings, PULPRQSGEMMTilingReadyBindings, \
48+
PULPRQSiHardswishTilingReadyBindings, PULPRQSMatrixVecTilingReadyBindings, PULPRQSTallGEMMTilingReadyBindings, \
49+
PULPRQSTilingReadyBindings, PULPSGDTilingReadyBindings, PULPSliceTilingReadyBindings, \
50+
PULPSoftmaxCrossEntropyGradTilingReadyBindings, PULPSoftmaxCrossEntropyTilingReadyBindings, \
51+
PULPSoftmaxGradTilingReadyBindings, PULPSoftmaxTilingReadyBindings, PULPTransposeTilingReadyBindings, \
52+
PULPUniformRQSTilingReadyBindings
5153
from Deeploy.Targets.PULPOpen.TopologyOptimizationPasses.Passes import PULPAddRequantMergePass, \
5254
PULPConvRequantMergePass, PULPGEMMRequantMergePass, PULPMatMulRequantMergePass
5355

@@ -73,7 +75,7 @@
7375
RQIntegerDivMapper = NodeMapper(RQIntegerDivParser(), [BasicRQIntegerDivBinding])
7476
RQGELU_int8_Mapper = NodeMapper(RQSiGELUParser(), PULPiRQSGELUTilingReadyBindings)
7577

76-
Conv1DMapper = NodeMapper(PULPConv1DParser(), [PULPConv1DBinding])
78+
Conv1DMapper = NodeMapper(PULPConv1DParser(), PULPRQSConv1DTilingReadyBindings)
7779
DWConv1DMapper = NodeMapper(PULPDWConv1DParser(), [PULPDWConv1DBinding])
7880
FPConv2DMapper = NodeMapper(PULPFPConv2DParser(), PULPConv2DTilingReadyBindings)
7981
Conv2DMapper = NodeMapper(PULPConv2DParser(), PULPRQSConv2DTilingReadyBindings)
@@ -83,6 +85,7 @@
8385
FloatGEMMMapper = NodeMapper(GEMMParser(), PULPFPGEMMTilingReadyBindings)
8486
MatrixVecMapper = NodeMapper(PULPMatrixVecParser(), PULPRQSMatrixVecTilingReadyBindings)
8587
TallGEMMMapper = NodeMapper(PULPTallGEMMParser(), PULPRQSTallGEMMTilingReadyBindings)
88+
MaxPool1DMapper = NodeMapper(MaxPool1DParser(), PULPMaxPool1DTilingReadyBindings)
8689
MaxPool2DMapper = NodeMapper(MaxPool2DParser(), PULPMaxPool2DTilingReadyBindings)
8790
LayerNormMapper = NodeMapper(LayerNormParser(), PULPLayernormTilingReadyBindings)
8891
LayerNormGradMapper = NodeMapper(LayerNormGradParser(), PULPLayernormGradTilingReadyBindings)
@@ -117,7 +120,7 @@
117120
'GeluGrad': GELUGradLayer([GELUGradMapper]),
118121
'LayerNormalization': LayerNormLayer([LayerNormMapper]),
119122
'LayerNormalizationGrad': LayerNormGradLayer([LayerNormGradMapper]),
120-
'MaxPool': MaxPoolLayer([MaxPool2DMapper]),
123+
'MaxPool': MaxPoolLayer([MaxPool1DMapper, MaxPool2DMapper]),
121124
'RequantizediGELU': RQSiGELULayer([RQGELU_int8_Mapper]),
122125
'RQIntegerDiv': RQIntegerDivLayer([RQIntegerDivMapper]),
123126
'MatMul': MatMulLayer([MatMulMapper]),

Deeploy/Targets/PULPOpen/Templates/ConvTemplate.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def alignToContext(self, ctxt: NetworkContext,
8888
def computeTransientBuffersSize(
8989
ctxt: NetworkContext,
9090
operatorRepresentation: OperatorRepresentation) -> List[Tuple[str, Union[int, IntVar]]]:
91-
im2col_dim = 8 * (1 * (1 + operatorRepresentation['pads'][0]) + operatorRepresentation['dim_kernel_y'])
91+
im2col_dim = 8 * 2 * operatorRepresentation['ch_im_in'] * operatorRepresentation['dim_kernel_y']
9292
im2col_name = operatorRepresentation['nodeName'] + "_buffer"
9393
return [(im2col_name, im2col_dim)]
9494

@@ -175,16 +175,7 @@ def __init__(self, templateStr):
175175
signatureString += '_u8'
176176
%>
177177
178-
<%
179-
operatorString = ''
180-
if dim_kernel_x == 1 and dim_kernel_y == 1:
181-
operatorString = 'pointwise'
182-
else:
183-
operatorString = 'conv'
184-
operatorString = 'conv'
185-
%>
186-
187-
pulp_nn_${operatorString}${signatureString}(${data_in}, ${ctxtBuffer}, NULL, ${data_out}, ${weight}, ${mul}, ${add}, 1, ${log2D}, 1, ${dim_im_in_y}, ${ch_im_in}, 1, ${dim_im_out_y}, ${ch_im_out}, 1, ${dim_kernel_y}, ${padding_y_top}, ${padding_y_bottom}, 0, 0, 1, ${stride_y}, 1, 1);
178+
pulp_nn_conv${signatureString}(${data_in}, ${ctxtBuffer}, NULL, ${data_out}, ${weight}, ${mul}, ${add}, 1, ${log2D}, 1, ${dim_im_in_y}, ${ch_im_in}, 1, ${dim_im_out_y}, ${ch_im_out}, 1, ${dim_kernel_y}, ${padding_y_top}, ${padding_y_bottom}, 0, 0, 1, ${stride_y}, 1, 1);
188179
""")
189180

190181
PULPDWConv1D_8_Template = PULP1DDWConvTemplate("""

0 commit comments

Comments
 (0)