|
31 | 31 | from Deeploy.AbstractDataTypes import PointerClass |
32 | 32 | from Deeploy.CommonExtensions.CodeTransformationPasses.Closure import ClosureGeneration, MemoryAwareClosureGeneration |
33 | 33 | from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \ |
34 | | - MemoryManagementGeneration |
| 34 | + MemoryManagementGeneration, MemoryPassthroughGeneration |
35 | 35 | from Deeploy.CommonExtensions.DataTypes import IntegerDataTypes, SignedIntegerDataTypes, float32_t, int8_t, int32_t, \ |
36 | 36 | uint8_t |
37 | 37 | from Deeploy.DeeployTypes import CodeTransformation, NodeBinding, NodeTemplate |
|
41 | 41 | GatherTemplate, QuantTemplate, RQSiGELUTemplate, iHardswishTemplate |
42 | 42 | from Deeploy.Targets.Generic.TypeCheckers import AddChecker, ConcatChecker, ConvChecker, DequantChecker, \ |
43 | 43 | GatherChecker, GELUChecker, GEMMChecker, HardswishChecker, LayerNormChecker, MatMulChecker, MulChecker, \ |
44 | | - QuantChecker, ReduceMeanChecker, ReluChecker, RQAddChecker, RQHardswishChecker, SGDChecker, SliceChecker, \ |
45 | | - SoftmaxChecker, SoftmaxCrossEntropyLossChecker, TransposeChecker |
| 44 | + QuantChecker, ReduceMeanChecker, ReluChecker, ReshapeChecker, RQAddChecker, RQHardswishChecker, SGDChecker, \ |
| 45 | + SliceChecker, SoftmaxChecker, SoftmaxCrossEntropyLossChecker, TransposeChecker |
46 | 46 | from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterSynch import PULPSynchCoresPass |
47 | 47 | from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterTiling import PULPClusterTiling |
48 | 48 | from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPL3Tiling import PULPL3Tiling |
|
53 | 53 | from Deeploy.Targets.PULPOpen.Templates import ConvTemplate, FloatAddTemplate, FloatConvTemplate, FloatGELUTemplate, \ |
54 | 54 | FloatGemmTemplate, FloatLayernormTemplate, FloatMatMulTemplate, FloatMaxPoolTemplate, FloatMulTemplate, \ |
55 | 55 | FloatReluTemplate, FloatSoftmaxTemplate, GEMMTemplate, MatrixVectorTemplate, MaxPool2DTemplate, MulTemplate, \ |
56 | | - ReduceMeanTemplate, RequantShiftTemplate, RQAddTemplate, RQSiHardswishTemplate, SGDTemplate, SliceTemplate, \ |
57 | | - SoftmaxCrossEntropyLossTemplate, TallGEMMTemplate, TransposeTemplate, UniformRequantShiftTemplate, \ |
| 56 | + ReduceMeanTemplate, RequantShiftTemplate, ReshapeTemplate, RQAddTemplate, RQSiHardswishTemplate, SGDTemplate, \ |
| 57 | + SliceTemplate, SoftmaxCrossEntropyLossTemplate, TallGEMMTemplate, TransposeTemplate, UniformRequantShiftTemplate, \ |
58 | 58 | iRMSNormTemplate, iSoftmaxTemplate |
59 | 59 | from Deeploy.Targets.PULPOpen.TypeCheckers import PULPConvChecker, PULPLinearChecker, PULPMaxPoolChecker, \ |
60 | 60 | PULPRequantShiftChecker |
|
76 | 76 | pi_cl_team_fork(NUM_CORES, (void*)${closureName}, &${closureStructArgName}); |
77 | 77 | """) |
78 | 78 |
|
| 79 | +SkipTransformer = CodeTransformation( |
| 80 | + [ArgumentStructGeneration(), |
| 81 | + MemoryPassthroughGeneration("L.*"), |
| 82 | + MemoryPassthroughGeneration(), |
| 83 | + FutureGeneration()]) |
| 84 | + |
79 | 85 | FunctionCallClosure = partial(ClosureGeneration, closureSuffix = "_closure") |
80 | 86 | ClusterClosure = partial(ClosureGeneration, |
81 | 87 | closureSuffix = "_cluster_entry", |
|
169 | 175 | for type in IntegerDataTypes |
170 | 176 | ] |
171 | 177 |
|
| 178 | +PULPReshapeBindings = [ |
| 179 | + NodeBinding(ReshapeChecker([PointerClass(type), PointerClass(int32_t)], [PointerClass(type)]), |
| 180 | + ReshapeTemplate.referenceTemplate, SkipTransformer) for type in IntegerDataTypes |
| 181 | +] + [ |
| 182 | + NodeBinding(ReshapeChecker([PointerClass(float32_t), PointerClass(type)], [PointerClass(float32_t)]), |
| 183 | + ReshapeTemplate.referenceTemplate, SkipTransformer) for type in IntegerDataTypes |
| 184 | +] |
| 185 | + |
172 | 186 | PULPRQAddBindings = [ |
173 | 187 | NodeBinding(RQAddChecker([PointerClass(_type), PointerClass(_type2)], [PointerClass(_type3)]), |
174 | 188 | RQAddTemplate.referenceTemplate, ForkTransformer) |
|
0 commit comments