From 9b748767ed2fd3f8aaf932988fc36b330c50121b Mon Sep 17 00:00:00 2001 From: Cong Li Date: Wed, 19 Nov 2025 14:49:32 +0100 Subject: [PATCH 01/10] test 1 --- Deeploy/DeeployTypes.py | 137 ++++++++++++---------------------------- 1 file changed, 41 insertions(+), 96 deletions(-) diff --git a/Deeploy/DeeployTypes.py b/Deeploy/DeeployTypes.py index 5ccfb7dcf7..aecc685b6c 100644 --- a/Deeploy/DeeployTypes.py +++ b/Deeploy/DeeployTypes.py @@ -1019,32 +1019,18 @@ def copy(self) -> NetworkContext: """ return copy.copy(self) - class NodeParser(): """Deeploy's core Parser class. Analyzes network nodes and evaluates whether they can be mapped by it. - """ def __init__(self): - self.operatorRepresentation: OperatorRepresentation = { - } #: Dict[str, Any]: The internal representation of the operator this parser has analyzed that describes all relevant attributes of the node to be used by code generation + self.operatorRepresentation: OperatorRepresentation = {} + print("[DEBUG][NodeParser.__init__] New NodeParser created") @abstractmethod def parseNode(self, node: gs.Node) -> bool: - """Parser-specific method to-be-implemented. Given a graphsurgeon node, this method returns whether its attributes are mappable by this parser. - - Parameters - ---------- - node : gs.Node - Graphsurgeon node to be evaluated - - Returns - ------- - bool - False if any attribute in the node cannot be mapped - correctly. - - """ + """Parser-specific method to-be-implemented.""" + print(f"[DEBUG][parseNode] Default parseNode called for node {node.op}") return True @abstractmethod @@ -1052,57 +1038,28 @@ def parseNodeCtxt(self, ctxt: NetworkContext, node: gs.Node, channels_first: bool = True) -> Tuple[NetworkContext, bool]: - """Parses the node's input and output tensors, and adds them to its operatorRepresentation. May also be used to assert certain input- and output-level characteristics like correct dimensions. - - Parameters - ---------- - ctxt : NetworkContext - Current NetworkContext - node : gs.Node - Node to be analyzed - channels_first : bool - Flag to indicate whether tensor dimensions are expected to - be in CxHxW layout (true) or HxWxC layout (false) - - Returns - ------- - Tuple[NetworkContext, bool] - Tuple of the updated NetworkContext and return boolean to - indicate whether the node, including it's IO tensors can - be mapped. - - """ - + """Parser-specific method.""" + print(f"[DEBUG][parseNodeCtxt] Default parseNodeCtxt called for node {node.op}") return ctxt, True @classmethod def parseInputs(cls, ctxt: NetworkContext, node: gs.Node) -> NetworkContext: - """DONT OVERRIDE - Takes care of hoisting IO tensors into the NetworkContext. Also verifies - that all inputs have been registered and the output has not been registered. - - Parameters - ---------- - ctxt : NetworkContext - Current NetworkContext - node : gs.Node - Node whose IO tensors should be hoisted - - Returns - ------- - NetworkContext - Updated NetworkContext with hoisted IO tensors - - """ + print(f"[DEBUG][parseInputs] Hoisting inputs for node {node.op}, name={node.name}") data_in_buffers = [] + for inputNode in node.inputs: + print(f"[DEBUG][parseInputs] Input tensor name: {inputNode.name}") + data_in = inputNode.name # Hoist constant inputs if type(inputNode) == gs.ir.tensor.Constant and not ctxt.is_global(data_in): + print(f"[DEBUG][parseInputs] Hoisting constant tensor {data_in}") ctxt.hoistConstant(inputNode) else: localBuffer = ctxt.lookup(data_in) data_in_buffers.append(localBuffer.name) + print(f"[DEBUG][parseInputs] Registered input buffer: {localBuffer.name}") ctxt.addUser(data_in, node) @@ -1110,74 +1067,46 @@ def parseInputs(cls, ctxt: NetworkContext, node: gs.Node) -> NetworkContext: @classmethod def parseOutputs(cls, ctxt: NetworkContext, node: gs.Node) -> NetworkContext: - """DONT OVERRIDE - registers the output tensor of the operator - - Parameters - ---------- - ctxt : NetworkContext - Current NetworkContext - node : gs.Node - Operator whose outputs should be parsed + print(f"[DEBUG][parseOutputs] Registering outputs for node {node.op}, name={node.name}") - Returns - ------- - NetworkContext - Updated NetworkContext - - """ outputNodes = node.outputs outputNames = [node.name for node in outputNodes] for node, name in zip(outputNodes, outputNames): + print(f"[DEBUG][parseOutputs] Output tensor name: {name}") if not ctxt.is_global(name): - nb = ctxt.VariableBuffer(name = name, shape = node.shape) + print(f"[DEBUG][parseOutputs] Creating new VariableBuffer for {name}") + nb = ctxt.VariableBuffer(name=name, shape=node.shape) ctxt.add(nb, 'local') else: + print(f"[DEBUG][parseOutputs] Output {name} already global") nb = ctxt.lookup(name) return ctxt @staticmethod def _unpack_const(attr) -> Union[int, float]: - """DON'T OVERRIDE - Helper function to get a Python scalar from an ONNX attribute. - The attributes can either be a numpy scalar value or a Constant tensor. - This expects the numpy value to be of size 1. - """ + print("[DEBUG][_unpack_const] Extracting scalar value from constant attribute") if isinstance(attr, gs.Constant): value = attr.values elif isinstance(attr, np.ndarray): value = attr else: - assert False, f"Unsupported attribute type {type(attr)}" - assert value.size == 1, f"Expected attribute of size 1. Got an array of shape {value.shape}" - return value.item() + raise AssertionError(f"Unsupported attribute type {type(attr)}") + + assert value.size == 1, f"Expected attribute of size 1. Got array shape {value.shape}" + val = value.item() + print(f"[DEBUG][_unpack_const] Value = {val}") + return val - # Don't touch this def parse(self, ctxt: NetworkContext, node: gs.Node, default_channels_first: bool = True, ioParse: bool = True) -> Tuple[NetworkContext, bool]: - """DONT OVERRIDE - Uses other NodeParser functions to implement a full parsing passing of the node - Parameters - ---------- - ctxt : NetworkContext - Current NetworkContext - node : gs.Node - Node to be parsed - default_channels_first : bool - The default `channels_first` value if none is provided by the node's attributes - ioParse : bool - Flag to indicate whether to go through IO parsing or not - - Returns - ------- - Tuple[NetworkContext, bool] - Returns updated NetworkContext and flag to indicate - success + print(f"\n[DEBUG][parse] >>> Enter NodeParser.parse(), node={node.op}, name={node.name}") - """ self.operatorRepresentation = {} if "channels_first" in node.attrs: @@ -1185,18 +1114,34 @@ def parse(self, else: self.operatorRepresentation['channels_first'] = default_channels_first + print(f"[DEBUG][parse] channels_first={self.operatorRepresentation['channels_first']}") + print("[DEBUG][parse] Calling parseNode() ...") + ret = self.parseNode(node) + print(f"[DEBUG][parse] parseNode() returned {ret}") if not ret: + print("[DEBUG][parse] parseNode returned False → abort") return ctxt, False if ioParse: + print("[DEBUG][parse] Copying context for IO parsing") ctxt = ctxt.copy() + + print("[DEBUG][parse] Calling parseInputs() ...") ctxt = self.parseInputs(ctxt, node) + + print("[DEBUG][parse] Calling parseOutputs() ...") ctxt = self.parseOutputs(ctxt, node) + print(f"[DEBUG][parse] <<< Exit NodeParser.parse() for node {node.op}") return ctxt, True + + + + + class NodeTypeChecker(): """Implements type checking according to user-defined rules to assign Deeploy-types to the Python-typed input graph From 5d499d4719cc0c73fa5b207c78d225763ab27f72 Mon Sep 17 00:00:00 2001 From: CongLi Date: Mon, 24 Nov 2025 15:43:05 +0100 Subject: [PATCH 02/10] test --- Deeploy/DeeployTypes.py | 148 +++++++++++++++++++++++++++------------- 1 file changed, 101 insertions(+), 47 deletions(-) diff --git a/Deeploy/DeeployTypes.py b/Deeploy/DeeployTypes.py index aecc685b6c..8c2f5d2485 100644 --- a/Deeploy/DeeployTypes.py +++ b/Deeploy/DeeployTypes.py @@ -325,7 +325,7 @@ def fromNode(cls, node: gs.Node): return (cls(name = node.name, shape = node.shape if not isinstance(node, gs.Constant) else node.values.shape)) def has_live_aliases(self, ctxt: NetworkContext) -> bool: - """Checks whether this VariableBuffer has any live aliases, i.e. buffers that are still live and are aliased by this buffer. + """Checks whether this VariableBuffer has any live ancestors, i.e. buffers that are still live and are aliased by this buffer. Parameters ---------- ctxt : NetworkContext @@ -333,7 +333,7 @@ def has_live_aliases(self, ctxt: NetworkContext) -> bool: Returns ------- bool - True if this VariableBuffer has any live aliases, False otherwise + True if this VariableBuffer has any live ancestors, False otherwise """ # Do a breadth-first search across the aliasing double-linked list live = self._live @@ -1019,18 +1019,32 @@ def copy(self) -> NetworkContext: """ return copy.copy(self) + class NodeParser(): """Deeploy's core Parser class. Analyzes network nodes and evaluates whether they can be mapped by it. + """ def __init__(self): - self.operatorRepresentation: OperatorRepresentation = {} - print("[DEBUG][NodeParser.__init__] New NodeParser created") + self.operatorRepresentation: OperatorRepresentation = { + } #: Dict[str, Any]: The internal representation of the operator this parser has analyzed that describes all relevant attributes of the node to be used by code generation @abstractmethod def parseNode(self, node: gs.Node) -> bool: - """Parser-specific method to-be-implemented.""" - print(f"[DEBUG][parseNode] Default parseNode called for node {node.op}") + """Parser-specific method to-be-implemented. Given a graphsurgeon node, this method returns whether its attributes are mappable by this parser. + + Parameters + ---------- + node : gs.Node + Graphsurgeon node to be evaluated + + Returns + ------- + bool + False if any attribute in the node cannot be mapped + correctly. + + """ return True @abstractmethod @@ -1038,28 +1052,57 @@ def parseNodeCtxt(self, ctxt: NetworkContext, node: gs.Node, channels_first: bool = True) -> Tuple[NetworkContext, bool]: - """Parser-specific method.""" - print(f"[DEBUG][parseNodeCtxt] Default parseNodeCtxt called for node {node.op}") + """Parses the node's input and output tensors, and adds them to its operatorRepresentation. May also be used to assert certain input- and output-level characteristics like correct dimensions. + + Parameters + ---------- + ctxt : NetworkContext + Current NetworkContext + node : gs.Node + Node to be analyzed + channels_first : bool + Flag to indicate whether tensor dimensions are expected to + be in CxHxW layout (true) or HxWxC layout (false) + + Returns + ------- + Tuple[NetworkContext, bool] + Tuple of the updated NetworkContext and return boolean to + indicate whether the node, including it's IO tensors can + be mapped. + + """ + return ctxt, True @classmethod def parseInputs(cls, ctxt: NetworkContext, node: gs.Node) -> NetworkContext: - print(f"[DEBUG][parseInputs] Hoisting inputs for node {node.op}, name={node.name}") - data_in_buffers = [] + """DONT OVERRIDE - Takes care of hoisting IO tensors into the NetworkContext. Also verifies + that all inputs have been registered and the output has not been registered. - for inputNode in node.inputs: - print(f"[DEBUG][parseInputs] Input tensor name: {inputNode.name}") + Parameters + ---------- + ctxt : NetworkContext + Current NetworkContext + node : gs.Node + Node whose IO tensors should be hoisted + + Returns + ------- + NetworkContext + Updated NetworkContext with hoisted IO tensors + """ + data_in_buffers = [] + for inputNode in node.inputs: data_in = inputNode.name # Hoist constant inputs if type(inputNode) == gs.ir.tensor.Constant and not ctxt.is_global(data_in): - print(f"[DEBUG][parseInputs] Hoisting constant tensor {data_in}") ctxt.hoistConstant(inputNode) else: localBuffer = ctxt.lookup(data_in) data_in_buffers.append(localBuffer.name) - print(f"[DEBUG][parseInputs] Registered input buffer: {localBuffer.name}") ctxt.addUser(data_in, node) @@ -1067,46 +1110,74 @@ def parseInputs(cls, ctxt: NetworkContext, node: gs.Node) -> NetworkContext: @classmethod def parseOutputs(cls, ctxt: NetworkContext, node: gs.Node) -> NetworkContext: - print(f"[DEBUG][parseOutputs] Registering outputs for node {node.op}, name={node.name}") + """DONT OVERRIDE - registers the output tensor of the operator + + Parameters + ---------- + ctxt : NetworkContext + Current NetworkContext + node : gs.Node + Operator whose outputs should be parsed + Returns + ------- + NetworkContext + Updated NetworkContext + + """ outputNodes = node.outputs outputNames = [node.name for node in outputNodes] for node, name in zip(outputNodes, outputNames): - print(f"[DEBUG][parseOutputs] Output tensor name: {name}") if not ctxt.is_global(name): - print(f"[DEBUG][parseOutputs] Creating new VariableBuffer for {name}") - nb = ctxt.VariableBuffer(name=name, shape=node.shape) + nb = ctxt.VariableBuffer(name = name, shape = node.shape) ctxt.add(nb, 'local') else: - print(f"[DEBUG][parseOutputs] Output {name} already global") nb = ctxt.lookup(name) return ctxt @staticmethod def _unpack_const(attr) -> Union[int, float]: - print("[DEBUG][_unpack_const] Extracting scalar value from constant attribute") + """DON'T OVERRIDE - Helper function to get a Python scalar from an ONNX attribute. + The attributes can either be a numpy scalar value or a Constant tensor. + This expects the numpy value to be of size 1. + """ if isinstance(attr, gs.Constant): value = attr.values elif isinstance(attr, np.ndarray): value = attr else: - raise AssertionError(f"Unsupported attribute type {type(attr)}") - - assert value.size == 1, f"Expected attribute of size 1. Got array shape {value.shape}" - val = value.item() - print(f"[DEBUG][_unpack_const] Value = {val}") - return val + assert False, f"Unsupported attribute type {type(attr)}" + assert value.size == 1, f"Expected attribute of size 1. Got an array of shape {value.shape}" + return value.item() + # Don't touch this def parse(self, ctxt: NetworkContext, node: gs.Node, default_channels_first: bool = True, ioParse: bool = True) -> Tuple[NetworkContext, bool]: + """DONT OVERRIDE - Uses other NodeParser functions to implement a full parsing passing of the node - print(f"\n[DEBUG][parse] >>> Enter NodeParser.parse(), node={node.op}, name={node.name}") + Parameters + ---------- + ctxt : NetworkContext + Current NetworkContext + node : gs.Node + Node to be parsed + default_channels_first : bool + The default `channels_first` value if none is provided by the node's attributes + ioParse : bool + Flag to indicate whether to go through IO parsing or not + + Returns + ------- + Tuple[NetworkContext, bool] + Returns updated NetworkContext and flag to indicate + success + """ self.operatorRepresentation = {} if "channels_first" in node.attrs: @@ -1114,34 +1185,18 @@ def parse(self, else: self.operatorRepresentation['channels_first'] = default_channels_first - print(f"[DEBUG][parse] channels_first={self.operatorRepresentation['channels_first']}") - print("[DEBUG][parse] Calling parseNode() ...") - ret = self.parseNode(node) - print(f"[DEBUG][parse] parseNode() returned {ret}") if not ret: - print("[DEBUG][parse] parseNode returned False → abort") return ctxt, False if ioParse: - print("[DEBUG][parse] Copying context for IO parsing") ctxt = ctxt.copy() - - print("[DEBUG][parse] Calling parseInputs() ...") ctxt = self.parseInputs(ctxt, node) - - print("[DEBUG][parse] Calling parseOutputs() ...") ctxt = self.parseOutputs(ctxt, node) - print(f"[DEBUG][parse] <<< Exit NodeParser.parse() for node {node.op}") return ctxt, True - - - - - class NodeTypeChecker(): """Implements type checking according to user-defined rules to assign Deeploy-types to the Python-typed input graph @@ -2507,10 +2562,10 @@ def codeTransform(self, verbose: CodeGenVerbosity = _NoVerbosity): self.ctxt = layer.codeTransform(self.ctxt, verbose) self.transformed = True - def _selectEngine(self, node: gs.Node) -> DeploymentEngine: + def _mapNode(self, node: gs.Node) -> Union[ONNXLayer, Any]: for engine in self.Platform.engines: if node.op in engine.Mapping: - return engine + return engine.Mapping[node.op](node) raise RuntimeError(f"No mapping found for node {node.name} with op type {node.op}") def _bindLayers(self): @@ -2527,8 +2582,7 @@ def _bindLayers(self): flatSchedule += subGraph for node in flatSchedule: - engine = self._selectEngine(node) - layer = engine.Mapping[node.op](node) + layer = self._mapNode(node) if isinstance(layer, ONNXLayer): log.debug(f" {SUCCESS_MARK} Bind {node.name} to layer {layer.__class__.__name__}") self.layerBinding[layer.node.name] = layer From 30cfabb3d5237e9acd5d675c7f83a432d3834eca Mon Sep 17 00:00:00 2001 From: lee2716 Date: Tue, 25 Nov 2025 12:17:54 +0100 Subject: [PATCH 03/10] add pow2_fp16,pow2_fp32,sqrt_fp16,sqrt_fp32, rmsnorm_fp32, rmsnorm_fp16 for Generic --- .github/workflows/ci-platform-generic.yml | 6 + Deeploy/Targets/Generic/Bindings.py | 28 +++- Deeploy/Targets/Generic/Layers.py | 12 ++ Deeploy/Targets/Generic/Parsers.py | 120 ++++++++++++++++++ Deeploy/Targets/Generic/Platform.py | 23 ++-- .../Generic/Templates/FloatPowTemplate.py | 48 +++++++ .../Generic/Templates/FloatSqrtTemplate.py | 38 ++++++ DeeployTest/Tests/testFloat16Pow/inputs.npz | Bin 0 -> 2312 bytes DeeployTest/Tests/testFloat16Pow/network.onnx | Bin 0 -> 159 bytes DeeployTest/Tests/testFloat16Pow/outputs.npz | Bin 0 -> 2314 bytes .../Tests/testFloat16RMSNorm/inputs.npz | Bin 0 -> 2312 bytes .../Tests/testFloat16RMSNorm/network.onnx | Bin 0 -> 718 bytes .../Tests/testFloat16RMSNorm/outputs.npz | Bin 0 -> 2314 bytes DeeployTest/Tests/testFloat16Sqrt/inputs.npz | Bin 0 -> 2312 bytes .../Tests/testFloat16Sqrt/network.onnx | Bin 0 -> 137 bytes DeeployTest/Tests/testFloat16Sqrt/outputs.npz | Bin 0 -> 2314 bytes DeeployTest/Tests/testFloatPow/inputs.npz | Bin 0 -> 4360 bytes DeeployTest/Tests/testFloatPow/network.onnx | Bin 0 -> 151 bytes DeeployTest/Tests/testFloatPow/outputs.npz | Bin 0 -> 4362 bytes DeeployTest/Tests/testFloatRMSNorm/inputs.npz | Bin 0 -> 4360 bytes .../Tests/testFloatRMSNorm/network.onnx | Bin 0 -> 718 bytes .../Tests/testFloatRMSNorm/outputs.npz | Bin 0 -> 4362 bytes DeeployTest/Tests/testFloatSqrt/inputs.npz | Bin 0 -> 304 bytes DeeployTest/Tests/testFloatSqrt/network.onnx | Bin 0 -> 125 bytes DeeployTest/Tests/testFloatSqrt/outputs.npz | Bin 0 -> 306 bytes .../Generic/inc/DeeployBasicMath.h | 2 + TargetLibraries/Generic/inc/kernel/Pow.h | 25 ++++ TargetLibraries/Generic/inc/kernel/Sqrt.h | 24 ++++ TargetLibraries/Generic/inc/types.h | 9 ++ TargetLibraries/Generic/src/Pow_fp16.c | 26 ++++ TargetLibraries/Generic/src/Pow_fp32.c | 27 ++++ TargetLibraries/Generic/src/Sqrt_fp16.c | 13 ++ TargetLibraries/Generic/src/Sqrt_fp32.c | 13 ++ 33 files changed, 398 insertions(+), 16 deletions(-) create mode 100644 Deeploy/Targets/Generic/Templates/FloatPowTemplate.py create mode 100644 Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py create mode 100644 DeeployTest/Tests/testFloat16Pow/inputs.npz create mode 100644 DeeployTest/Tests/testFloat16Pow/network.onnx create mode 100644 DeeployTest/Tests/testFloat16Pow/outputs.npz create mode 100644 DeeployTest/Tests/testFloat16RMSNorm/inputs.npz create mode 100644 DeeployTest/Tests/testFloat16RMSNorm/network.onnx create mode 100644 DeeployTest/Tests/testFloat16RMSNorm/outputs.npz create mode 100644 DeeployTest/Tests/testFloat16Sqrt/inputs.npz create mode 100644 DeeployTest/Tests/testFloat16Sqrt/network.onnx create mode 100644 DeeployTest/Tests/testFloat16Sqrt/outputs.npz create mode 100644 DeeployTest/Tests/testFloatPow/inputs.npz create mode 100644 DeeployTest/Tests/testFloatPow/network.onnx create mode 100644 DeeployTest/Tests/testFloatPow/outputs.npz create mode 100644 DeeployTest/Tests/testFloatRMSNorm/inputs.npz create mode 100644 DeeployTest/Tests/testFloatRMSNorm/network.onnx create mode 100644 DeeployTest/Tests/testFloatRMSNorm/outputs.npz create mode 100644 DeeployTest/Tests/testFloatSqrt/inputs.npz create mode 100644 DeeployTest/Tests/testFloatSqrt/network.onnx create mode 100644 DeeployTest/Tests/testFloatSqrt/outputs.npz create mode 100644 TargetLibraries/Generic/inc/kernel/Pow.h create mode 100644 TargetLibraries/Generic/inc/kernel/Sqrt.h create mode 100644 TargetLibraries/Generic/src/Pow_fp16.c create mode 100644 TargetLibraries/Generic/src/Pow_fp32.c create mode 100644 TargetLibraries/Generic/src/Sqrt_fp16.c create mode 100644 TargetLibraries/Generic/src/Sqrt_fp32.c diff --git a/.github/workflows/ci-platform-generic.yml b/.github/workflows/ci-platform-generic.yml index 321bed6998..9840aefefb 100644 --- a/.github/workflows/ci-platform-generic.yml +++ b/.github/workflows/ci-platform-generic.yml @@ -73,6 +73,12 @@ jobs: testFloatSoftmax testFloatTranspose testFloatMul + testFloatPow + testFloatSqrt + testFloatRMSNorm + testFloat16Pow + testFloat16Sqrt + testFloat16RMSNorm Quant Dequant QuantizedLinear diff --git a/Deeploy/Targets/Generic/Bindings.py b/Deeploy/Targets/Generic/Bindings.py index 6bfe805b39..8c73ad6e13 100644 --- a/Deeploy/Targets/Generic/Bindings.py +++ b/Deeploy/Targets/Generic/Bindings.py @@ -7,19 +7,19 @@ from Deeploy.AbstractDataTypes import PointerClass from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \ MemoryManagementGeneration, MemoryPassthroughGeneration -from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, float32_t, \ - int8_t, int32_t, uint8_t +from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, float16_t, \ + float32_t, int8_t, int32_t, uint8_t from Deeploy.DeeployTypes import CodeTransformation, NodeBinding from Deeploy.FutureExtension.CodeTransformationPasses.FutureCodeTransformation import FutureGeneration from Deeploy.Targets.Generic.Templates import AddTemplate, BatchNormalizationTemplate, ConcatTemplate, ConvTemplate, \ ConvTransposeTemplate, DebugPrintTemplate, DequantTemplate, DummyTemplate, DWConvTemplate, FloatAddTemplate, \ FloatConvTemplate, FloatDivTemplate, FloatDWConvTemplate, FloatGELUTemplate, FloatGemmTemplate, \ FloatLayernormTemplate, FloatMatMulTemplate, FloatMaxPoolTemplate, FloatMulTemplate, FloatPadTemplate, \ - FloatReduceMeanTemplate, FloatReluTemplate, FloatSoftmaxTemplate, GatherTemplate, GemmTemplate, \ - IntegerDivTemplate, ITAMaxTemplate, ITAPartialMaxTemplate, MatMulTemplate, MaxPoolTemplate, MulTemplate, \ - PadTemplate, QuantTemplate, ReduceMeanTemplate, ReduceSumTemplate, RequantShiftTemplate, ReshapeTemplate, \ - RQIntegerDivTemplate, RQSiGELUTemplate, SliceTemplate, TransposeTemplate, iGELUTemplate, iLayernormTemplate, \ - iRMSNormTemplate, iSoftmaxTemplate + FloatPowTemplate, FloatReduceMeanTemplate, FloatReluTemplate, FloatSoftmaxTemplate, FloatSqrtTemplate, \ + GatherTemplate, GemmTemplate, IntegerDivTemplate, ITAMaxTemplate, ITAPartialMaxTemplate, MatMulTemplate, \ + MaxPoolTemplate, MulTemplate, PadTemplate, QuantTemplate, ReduceMeanTemplate, ReduceSumTemplate, \ + RequantShiftTemplate, ReshapeTemplate, RQIntegerDivTemplate, RQSiGELUTemplate, SliceTemplate, TransposeTemplate, \ + iGELUTemplate, iLayernormTemplate, iRMSNormTemplate, iSoftmaxTemplate from Deeploy.Targets.Generic.TypeCheckers import AddChecker, BatchNormChecker, ConcatChecker, ConvChecker, \ DebugPrintChecker, DequantChecker, DivChecker, DummyChecker, GatherChecker, GELUChecker, GEMMChecker, \ LayerNormChecker, MatMulChecker, MaxPoolChecker, MulChecker, PadChecker, QuantChecker, ReduceMeanChecker, \ @@ -118,6 +118,20 @@ BasicTransformer) ] +BasicPowBindings = [ + NodeBinding(DummyChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatPowTemplate.referenceTemplate, BasicTransformer), + NodeBinding(DummyChecker([PointerClass(float16_t), PointerClass(float16_t)], [PointerClass(float16_t)]), + FloatPowTemplate.referenceTemplate, BasicTransformer) +] + +BasicSqrtBindings = [ + NodeBinding(DummyChecker([PointerClass(float32_t)], [PointerClass(float32_t)]), FloatSqrtTemplate.referenceTemplate, + BasicTransformer), + NodeBinding(DummyChecker([PointerClass(float16_t)], [PointerClass(float16_t)]), FloatSqrtTemplate.referenceTemplate, + BasicTransformer) +] + BasicDivBindings = [ NodeBinding(DivChecker([PointerClass(int32_t), PointerClass(int32_t)], [PointerClass(int32_t)]), IntegerDivTemplate.referenceTemplate, BasicTransformer) diff --git a/Deeploy/Targets/Generic/Layers.py b/Deeploy/Targets/Generic/Layers.py index c924895c13..c61b3eb9a1 100644 --- a/Deeploy/Targets/Generic/Layers.py +++ b/Deeploy/Targets/Generic/Layers.py @@ -227,6 +227,18 @@ def computeOps(self): return matmul + rqs +class PowLayer(ONNXLayer): + + def __init__(self, maps: List[NodeMapper]): + super().__init__(maps) + + +class SqrtLayer(ONNXLayer): + + def __init__(self, maps: List[NodeMapper]): + super().__init__(maps) + + class DivLayer(ONNXLayer): def __init__(self, maps: List[NodeMapper]): diff --git a/Deeploy/Targets/Generic/Parsers.py b/Deeploy/Targets/Generic/Parsers.py index f63bb5411d..2f2ed041eb 100644 --- a/Deeploy/Targets/Generic/Parsers.py +++ b/Deeploy/Targets/Generic/Parsers.py @@ -1964,6 +1964,65 @@ def parseNodeCtxt(self, return ctxt, True +class PowParser(NodeParser): + + def __init__(self): + super().__init__() + + def parseNode(self, node: gs.Node) -> bool: + return node.op == 'Pow' and len(node.inputs) == 2 and len(node.outputs) == 1 + + def parseNodeCtxt(self, + ctxt: NetworkContext, + node: gs.Node, + channels_first: bool = True) -> Tuple[NetworkContext, bool]: + + # Lookup both inputs (data and exponent) + data_in = ctxt.lookup(node.inputs[0].name) + exponent_tensor = ctxt.lookup(node.inputs[1].name) + data_out = ctxt.lookup(node.outputs[0].name) + + self.operatorRepresentation['data_in'] = data_in.name + self.operatorRepresentation['exponent'] = exponent_tensor.name + self.operatorRepresentation['data_out'] = data_out.name + + # Extract exponent value from the constant tensor + if isinstance(exponent_tensor, ConstantBuffer): + exp_value = int(exponent_tensor.values.flatten()[0]) + self.operatorRepresentation['exponent_value'] = exp_value + else: + # Tensor exponent not supported + raise ValueError(f"Node {node.name}: Exponent must be a constant. " + f"Variable tensor exponents are not supported.") + + self.operatorRepresentation['size'] = int(np.prod(data_in.shape)) + + return ctxt, True + + +class SqrtParser(NodeParser): + + def __init__(self): + super().__init__() + + def parseNode(self, node: gs.Node) -> bool: + return node.op == 'Sqrt' and len(node.inputs) == 1 and len(node.outputs) == 1 + + def parseNodeCtxt(self, + ctxt: NetworkContext, + node: gs.Node, + channels_first: bool = True) -> Tuple[NetworkContext, bool]: + + data_in = ctxt.lookup(node.inputs[0].name) + data_out = ctxt.lookup(node.outputs[0].name) + + self.operatorRepresentation['data_in'] = data_in.name + self.operatorRepresentation['data_out'] = data_out.name + self.operatorRepresentation['size'] = int(np.prod(data_in.shape)) + + return ctxt, True + + class DivParser(NodeParser): def __init__(self): @@ -2747,3 +2806,64 @@ def parseNodeCtxt(self, "ch_im_out"] * self.operatorRepresentation["dim_im_out_y"] return newCtxt, True return ctxt, False + + +############################ + + +class PowParser(NodeParser): + + def __init__(self): + super().__init__() + + def parseNode(self, node: gs.Node) -> bool: + return node.op == 'Pow' and len(node.inputs) == 2 and len(node.outputs) == 1 + + def parseNodeCtxt(self, + ctxt: NetworkContext, + node: gs.Node, + channels_first: bool = True) -> Tuple[NetworkContext, bool]: + + data_in = ctxt.lookup(node.inputs[0].name) + exponent = node.inputs[1] + data_out = ctxt.lookup(node.outputs[0].name) + + self.operatorRepresentation['data_in'] = data_in.name + self.operatorRepresentation['data_out'] = data_out.name + + # Check if exponent is a constant + if isinstance(exponent, gs.Constant): + exp_value = float(exponent.values) + self.operatorRepresentation['exponent'] = exp_value + self.operatorRepresentation['is_constant_exp'] = True + else: + exp_tensor = ctxt.lookup(exponent.name) + self.operatorRepresentation['exponent'] = exp_tensor.name + self.operatorRepresentation['is_constant_exp'] = False + + self.operatorRepresentation['size'] = int(np.prod(data_in.shape)) + + return ctxt, True + + +class SqrtParser(NodeParser): + + def __init__(self): + super().__init__() + + def parseNode(self, node: gs.Node) -> bool: + return node.op == 'Sqrt' and len(node.inputs) == 1 and len(node.outputs) == 1 + + def parseNodeCtxt(self, + ctxt: NetworkContext, + node: gs.Node, + channels_first: bool = True) -> Tuple[NetworkContext, bool]: + + data_in = ctxt.lookup(node.inputs[0].name) + data_out = ctxt.lookup(node.outputs[0].name) + + self.operatorRepresentation['data_in'] = data_in.name + self.operatorRepresentation['data_out'] = data_out.name + self.operatorRepresentation['size'] = int(np.prod(data_in.shape)) + + return ctxt, True diff --git a/Deeploy/Targets/Generic/Platform.py b/Deeploy/Targets/Generic/Platform.py index a15b3db2e6..785d932776 100644 --- a/Deeploy/Targets/Generic/Platform.py +++ b/Deeploy/Targets/Generic/Platform.py @@ -11,21 +11,22 @@ BasicDequantBindings, BasicDivBindings, BasicDWConv1DBinding, BasicDWConv2DBindings, BasicGatherBindings, \ BasicGELUBindings, BasicGEMMBindings, BasicITAPartialSoftmaxBinding, BasicITASoftmaxBinding, \ BasicLayerNormBindings, BasicMatMulBindings, BasicMaxPool1DBindings, BasicMaxPool2DBindings, BasicMulBindings, \ - BasicPad1DBindings, BasicPad2DBindings, BasicQuantBindings, BasicReduceMeanBindings, BasicReduceSumBindings, \ - BasicReluBinding, BasicReshapeBindings, BasicRQIntegerDivBinding, BasicRQSBindings, BasicRQSGELUBinding, \ - BasicSliceBindings, BasicSoftmaxBindings, BasicTransposeBindings, DummyBinding + BasicPad1DBindings, BasicPad2DBindings, BasicPowBindings, BasicQuantBindings, BasicReduceMeanBindings, \ + BasicReduceSumBindings, BasicReluBinding, BasicReshapeBindings, BasicRQIntegerDivBinding, BasicRQSBindings, \ + BasicRQSGELUBinding, BasicSliceBindings, BasicSoftmaxBindings, BasicSqrtBindings, BasicTransposeBindings, \ + DummyBinding from Deeploy.Targets.Generic.Layers import AddLayer, BatchNormalizationLayer, ConcatLayer, ConvLayer, \ ConvTransposeLayer, DebugPrintLayer, DequantLayer, DivLayer, GatherLayer, GELULayer, GEMMLayer, ITAMaxLayer, \ - LayerNormLayer, MatMulLayer, MaxPoolLayer, MulLayer, PadLayer, QuantLayer, ReduceMeanLayer, ReduceSumLayer, \ - ReluLayer, RequantShiftLayer, ReshapeLayer, RQIntegerDivLayer, RQSiGELULayer, SliceLayer, SoftmaxLayer, \ - TransposeLayer + LayerNormLayer, MatMulLayer, MaxPoolLayer, MulLayer, PadLayer, PowLayer, QuantLayer, ReduceMeanLayer, \ + ReduceSumLayer, ReluLayer, RequantShiftLayer, ReshapeLayer, RQIntegerDivLayer, RQSiGELULayer, SliceLayer, \ + SoftmaxLayer, SqrtLayer, TransposeLayer from Deeploy.Targets.Generic.Parsers import AddParser, BatchNormParser, ConcatParser, ConvTranspose1DParser, \ DebugParser, DequantParser, DivParser, DummyParser, FlattenParser, GatherParser, GELUParser, GenericConv1DParser, \ GenericConv2DParser, GenericDWConv1DParser, GenericDWConv2DParser, GenericGEMMParser, GenericMaxPool2DParser, \ IntegerDivParser, ITAMaxParser, ITAPartialMaxParser, LayerNormParser, MatMulParser, MaxPool1DParser, MulParser, \ - Pad1DParser, Pad2DParser, QuantParser, ReduceMeanParser, ReduceSumParser, ReluParser, RequantShiftParser, \ - ReshapeParser, RQIntegerDivParser, RQSiGELUParser, SliceParser, SoftmaxParser, TransposeParser, UnsqueezeParser, \ - iLayerNormParser, iSoftmaxParser + Pad1DParser, Pad2DParser, PowParser, QuantParser, ReduceMeanParser, ReduceSumParser, ReluParser, \ + RequantShiftParser, ReshapeParser, RQIntegerDivParser, RQSiGELUParser, SliceParser, SoftmaxParser, SqrtParser, \ + TransposeParser, UnsqueezeParser, iLayerNormParser, iSoftmaxParser from Deeploy.Targets.Generic.Templates import AllocateTemplate, FreeTemplate from Deeploy.Targets.Generic.TopologyOptimizationPasses.Passes import DequantPatternPass, ExtractPaddingFromConvPass, \ ExtractPaddingFromPoolPass, MatMulAddMergePass, MergeConstAddAndRequantPass, QuantPatternPass, \ @@ -52,6 +53,8 @@ MaxPoolMapper = NodeMapper(GenericMaxPool2DParser(), BasicMaxPool2DBindings) MaxPool1DMapper = NodeMapper(MaxPool1DParser(), BasicMaxPool1DBindings) MulMapper = NodeMapper(MulParser(), BasicMulBindings) +PowMapper = NodeMapper(PowParser(), BasicPowBindings) +SqrtMapper = NodeMapper(SqrtParser(), BasicSqrtBindings) Pad1DMapper = NodeMapper(Pad1DParser(), BasicPad1DBindings) Pad2DMapper = NodeMapper(Pad2DParser(), BasicPad2DBindings) ReduceMeanMapper = NodeMapper(ReduceMeanParser(), BasicReduceMeanBindings) @@ -98,6 +101,8 @@ 'MatMulInteger': MatMulLayer([MatMulMapper]), 'MaxPool': MaxPoolLayer([MaxPool1DMapper, MaxPoolMapper]), 'Mul': MulLayer([MulMapper]), + 'Pow': PowLayer([PowMapper]), + 'Sqrt': SqrtLayer([SqrtMapper]), 'Pad': PadLayer([Pad1DMapper, Pad2DMapper]), 'ReduceMean': ReduceMeanLayer([ReduceMeanMapper]), 'ReduceSum': ReduceSumLayer([ReduceSumMapper]), diff --git a/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py b/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py new file mode 100644 index 0000000000..6af568a389 --- /dev/null +++ b/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from typing import Dict, List, Tuple + +import numpy as np + +from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation + + +class _PowTemplate(NodeTemplate): + + def alignToContext(self, ctxt: NetworkContext, + operatorRepresentation: OperatorRepresentation) -> Tuple[NetworkContext, Dict, List[str]]: + + # Get input and output tensors + data_in = ctxt.lookup(operatorRepresentation['data_in']) + data_out = ctxt.lookup(operatorRepresentation['data_out']) + + # Get data type (fp32 or fp16) + data_type = data_in._type.typeName + operatorRepresentation['data_type'] = data_type + + # Exponent must be a constant integer + if 'exponent' in operatorRepresentation: + exponent_input = operatorRepresentation['exponent'] + if isinstance(exponent_input, str): + # It's a tensor name - not supported for integer exponent version + raise ValueError("Tensor exponent not supported. Use constant integer exponent.") + else: + # Convert to integer + operatorRepresentation['exponent_value'] = int(exponent_input) + + # Calculate size + operatorRepresentation['size'] = int(np.prod(data_in.shape)) + + return ctxt, operatorRepresentation, [] + + +referenceTemplate = _PowTemplate(""" +// Pow (Name: ${nodeName}, Op: ${nodeOp}) +% if 'float32' in data_type: +Pow_fp32_int32_fp32(${data_in}, ${exponent_value}, ${data_out}, ${size}); +% elif 'float16' in data_type: +Pow_fp16_int32_fp16(${data_in}, ${exponent_value}, ${data_out}, ${size}); +% endif +""") diff --git a/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py b/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py new file mode 100644 index 0000000000..aaddc7f582 --- /dev/null +++ b/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from typing import Dict, List, Tuple + +import numpy as np + +from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation + + +class _SqrtTemplate(NodeTemplate): + + def alignToContext(self, ctxt: NetworkContext, + operatorRepresentation: OperatorRepresentation) -> Tuple[NetworkContext, Dict, List[str]]: + + # Get input and output tensors + data_in = ctxt.lookup(operatorRepresentation['data_in']) + data_out = ctxt.lookup(operatorRepresentation['data_out']) + + # Get data type (fp32 or fp16) + data_type = data_in._type.typeName + operatorRepresentation['data_type'] = data_type + + # Calculate size + operatorRepresentation['size'] = int(np.prod(data_in.shape)) + + return ctxt, operatorRepresentation, [] + + +referenceTemplate = _SqrtTemplate(""" +// Sqrt (Name: ${nodeName}, Op: ${nodeOp}) +% if 'float32' in data_type: +Sqrt_fp32_fp32(${data_in}, ${data_out}, ${size}); +% elif 'float16' in data_type: +Sqrt_fp16_fp16(${data_in}, ${data_out}, ${size}); +% endif +""") diff --git a/DeeployTest/Tests/testFloat16Pow/inputs.npz b/DeeployTest/Tests/testFloat16Pow/inputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..a948be1cc2161260853c35585cb460535b4f3eaf GIT binary patch literal 2312 zcmbVOX;@U}6=rjO1Zgw5waa)iK3WRiT5Gzj}^#tHnHJ#0nt zCHI%fPkjAd5_yjwgNl?8l*NrFc{GxtQ~cZ!S@2Bs-q186nSfEHu3Am?7JHT{Nlojh za&f;UhB)u2_kD88JGR@N*!(H6s-_-Szz}vOJ5l|Juhg2EckSKk4wRG94-tB<$&UBZ z^HiIVt{6O}>_hx38^;&u_biD-8v6uK(vlfJ5k!=etK=0nCn3q}#C`O6oCaFdX>1kT zt$4UfYA?HA>~i&2qSfunKOAexeBuaOGpe13?p0}l;D$08Bii8df(p9UaX}fXkCD3A zF6&ENZZT3}>Vwq6u@zV*i7UV3a8n%koO_x!i5-NTTE^_AoHm|I9K~zQ)d0<}?muy4fpuuIHe{%Aw*0 zYLGUE6YX&@T=z+@@wM^@+R83fkJc5R9gYXNf51Bgqz#nJspolJ`xx?ZU1}aZ-+BcV znT+0a^E5C=c#6~QZN3{$53`x*LAA|yBnh>!Ub0-aau0|t>;O=uY(U?E+sxeRQgbAa z(E_HZ`B`%wJj9l=fX^AT7CdvOl13+)a*p|fVz&3iH*gi4#s0wb0~4xJ)GpI9`3mQ8 zRx0tHN~#R)Ra$JwUNAitLhVX+y(w@fki zKH_uN1QK$U2*yV4)37x8)`x*1?KXGs!ctUl_tg9DBe&HQiN)37Jd+exo^1-JvbvPKY0BTNqNlENSST zLK#mfGl_!J)vodCVKj&hVy>z4Qi9ofJ)6mpcQYdu##g2%8WRbqMuKXcb9|0z`8DHh z#o+A=52HqQ8|Inw{3HJY7>P`8=)nJnmFv*}HaYW*v! z+B%0AsbygbhSshDcEb@vDHn$fDS6UU?_+nQtyb#GC#pS71Ef#*Db_gnNSjDRbLq+B z;b?S%KWK0D#7XV^48e?KZ>c*+%T_~hyt1lhvyBkGSHI#qn`fO~1UBJlYNq9H^fBU| zeS|EcmuNK_E}w;s{BBhH>aWXCDA;5T)h&Wq{1y@3J;Ypc0_bBu-IS|r)jDONCPj=# zNjBo-88{?OL>*ExTnlnV2jllB%nG=R9m=G`dbpjpfb6E`)KB3~@LWGA}G+B+5D!j>KuHhvbWJn7$qjpvDWNV-@b_L$%b52WRP}&A6H)li^=Kq2aJ)92Qyw> z$^rEHbNmvS5aVlQZFp*-tgt|imp<_EQm6mddIUR}ZKJR{@^nsR6%H2qaAB_733b*8 z|2@}QIS6ldTf|sUf%Y*6`9)mS*kpM>m_{XW5x@o~p$UAJ)nG4^9}Barl&nj!o=cRO uIe_4)$@a{tfkENH|I57m>`{8TB(RtNYh^O0_UYRz1ilLTRaJkoGd}{D^yO&) literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloat16Pow/network.onnx b/DeeployTest/Tests/testFloat16Pow/network.onnx new file mode 100644 index 0000000000000000000000000000000000000000..38690e0ae67b0f9733dab0409a5beab996f09f06 GIT binary patch literal 159 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 literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloat16RMSNorm/network.onnx b/DeeployTest/Tests/testFloat16RMSNorm/network.onnx new file mode 100644 index 0000000000000000000000000000000000000000..453350dc1460da79f5c8a7227542b1021f841c27 GIT binary patch literal 718 zcmZuuO-sWt7~WR5Wv{KDlG=cN0#a$#@tmuv98==fjhWm_*cfQ7BT63!ffY zQ<1_DemU3@oJvncgv(G!iZ^8(tc~4(s34wu2Fv`d2~m@H4p&grL7VZ!^I3rHfD*p8 zJI0$K%g2rL0!kXNXehCrkcbifLOngXHt~IP$X6cvJ{&_yf~_c!ZbvR6wG?g4^bt=%IQKM!9p` zsND>l3^CssH~O{JsGHF2?Vz8rtDG`}i|QHprvbw~?c_hfU2qWK4p`_5K?BvFcOhT1 mLcQ-5dabetrOK-OVY!%p1;v`Gf^9IhRPp^{+7)`#=s7=b`@C2H literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloat16RMSNorm/outputs.npz b/DeeployTest/Tests/testFloat16RMSNorm/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..4e41812bd9aea266fed0bad7b3c78253b076e93b GIT binary patch literal 2314 zcmbVOyKWOv6uc$`p%jS1A7CnjWFZn!Abe|@2;_!>3R%Pv1&S@(K|%;A|G;O^(s{om zUqOe663m%1clO*hqQO^t9y4?1?jsxRF7Bp;;~@3Z{CvGQUq3!u zeCnn9jzS3*zpt-eznr}3rH|?J@MN}nw;Vnn4D;#Ha5Na6&X?=u^z7|?c`^h3V)|h< zGko=ax|mu2@bJme)6wAY(P;2x@PEI9lv85|qOxirL=|(}v$Bb+jn840DtV#Xbrh#u zD{@Co1u%I;1&&O?F2}AzR}d+-o9)=OxnkfLu407JL41~zXLL1#y6(xt0SjHe(*95a zBaWJVAlc59tj)D7YOSW=$earga>B)i50qG;5Ld7*o}@ID@~6%UI%=6igQ~c=e|DuK zH=A}xX^g$mU5TlR-T9k>Ml3U;kenLZ!w=V)dz{NJ-^c$3fQvznMTQt6b;vxL%W-)! zm;o!T)Wo8r3Tmui+0}T|(5XYllrYv}#UMk2rHm^7hhO66R6Yq}F)oQ3+YtCWK@@TA%*-zR$F znCN1_F-KIDbz8g_=!r2$oePId6*+c|J1R=il)KHDu2Nli1wwss({)|zJ!t$4sHQR^ zIYiz)yQ=C+siUUe*Y!n*UBN|Ehs-*zi%4$INR@E;lsWeWhh;9`@n4!X?>+Qbj(O}> rHdRn*S~c$VAUhaKS!5I;77Z?y@6dlbFM-i7O z8kGy6)}jbGxgnt8e!`RQ2!- zwET{qmi^1WE}!dTv9wt`OQ2<9c5cD60ol3lxmo;wBikmn1>3MfM~#kjvrM*55Vcv+c?8JsGc~@+26bftz>dcH=GPhpaCX0XVE%23+u!iG}Up^2%t-$ zRg_>8doCBiQScNE5Xl$v5v)scmMo|ID6Sc)d>h8A39eu{?$?)_##==q>c6g**#NXlK*YRP|wezVW(|Ze1s2 z9%g^4Z^su}q8h^cnjQ7Qa12_s#ju7piF;xXFOp)=omP=RTZV{(^$Fv7mF5F!gu^%V zD&A16bent{3o&00gv#u!v-B}m;9U_z#l{_Nc=4k!Ecfx@G=^c+Cet? z4xeBRR?vY7XK@s3Z+e@EX~ucV@xBpHp71L;3PQy-X_tsH-PBpU5Gx=RGGPvV$M8dc zoQ(T1liT?V@P`a|2Fq|b-9z_E!$p*}ft}|4j118|Wrnpk&ZDE0zwz^srJWHrslWX* zUdvlWF?2Jh@piNoPUy4QC1J_%o0EdDgYj=U6&gh$t_E-HXylUJ&>o}B2)2=4 z0V}1Ke};_rLknGljns_Wg3F|zjYrsm{l#rj#?T0+Ltq~~hKI0J8o+Dq z*ZBvm1T*LrIZUmEgW?r=s5BOw&Npxp1V{-|e{%<|q=9%J`CXGy&n)KG#You6E(u*! z;v$>3(Splx4?7|r>ifu-Y%(R{q%+9uXO4z_{IKyVN)SMHV{d$f3t_7m&Mx94oNsd^ z@23G6X?~zi700N*X~lTF#s;!)^!4@$*aef!ShIzngF9&8K)sR`C{M6dRBMA>=bK4) z$b(@Xzvwc7x4DOyh3(m1r8c<+j*9UhvTWo!iZ(?6Fh#W2GrYE)0Y znGduNr3Vz#5oP*NfBd7K0!JWE++txYjn-o{`k2F%51|nkkd2N?7$B_pLTLqGEr|3W zK^OtWypR^+9ohqDv%k|bY@x9YWPVOthhNeLINN=7KwzaE23|(_*p%U0KLZvirDI1tItb zk&u{=U!lK9h2uB{K2?W^l|o}{;afa|>)94L!c4$8n6`qQ6i z4L^cFP5LoxV&&Rq)?S@RVtG8P!38u$G>Q25FvutFW{x_L*`!$0$^R_&J9a^$R*pTj zfCok4cxpMSo;!xRw z?~*|HkM>Lo)QeywM&VQXCWLBWti{3cPHB*)Cod$5u(MJOMh7j_|4GxuKK-l+VNHA* z8*Mb>NpMrMu`B-wEy&oMq#FGMchwfXRf)lHb2(Q@y`Gv_jo-^d#TESl?*viUR~r|1 zN%<6~;|%e>h=8%A8spd(bT;2(iy-CDTPha4^y@Un$fI*0+XxhoSr}Z!QW&Gfr!3KP zMIZYRK3xo;7XaiU=VBPdHOOIo_1EzwjDT}`y7((CmHvU>Dvxjls~{(Nforv|>t_U4 zok-9__yR4`yp7*mC&FngBHhFR{30a{a*R{h$)u{Ad!Wbv5--1Nlr}%tte%23tI QyNz&jwPCLQ&~I|)SBQ~XRR910 literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloat16Sqrt/network.onnx b/DeeployTest/Tests/testFloat16Sqrt/network.onnx new file mode 100644 index 0000000000000000000000000000000000000000..68852495814aa6d93d80650a7c7db96653abd82b GIT binary patch literal 137 zcmd3xi~qvgjl(lIT|>UM7f~G2q6nQv2Za6@B#q5 Cq9xS; literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloat16Sqrt/outputs.npz b/DeeployTest/Tests/testFloat16Sqrt/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..11a8727f3f3270a3e3a5efc411fbd6527d546aef GIT binary patch literal 2314 zcmbVOX;c>H6$XVUSgWZ-)MFJ_(120I{rf&HB~l-Gf5{ zy9D~p@%w+5cU!K6;D}V&Rd%Vd6UU_&jyP+u8k?0;Q0e57H5^Z+l4d7RV?NH4F;fM~ z-(|4zt+Z3E%nJMqpI{*wRtJ2^FD-AG7>y(LZ}R5dc39l~&#i+pUOt=2bc zDKElSWcKeQshp##trEI|EDDhxXvp_*2OiW|X45dr3M~;|S!M{G!Y#GMe$BPGr&{6z zRO$k~$&ci*L`i*X4far!@;3HM8~8f|5qzk-|ulk}wWm6OyU^9M?WzyDq zlRMMT>H&xk;i06!S2l{LOjHIU$m#MxZ&i*PC`5C9<~Wb#d=Gc=1rjNQx8SeTMx{y_ z0+FK!XN~p2VT=enumGVg)`_ZZ^=wFM0cbj7w4%Rx3@l%^`RFyMn=+p zdFjdvT?%(@XZM#_Y*#-@nfa+PP)5oNvGEh$kt|9<2xahRW{m3&)@q+|+*RGR-D!gK zM^l8+O@t#!O66mIu4?H|D0ZB;1{z*Q27+;uO{>0K=PqgkM{>D570YPLccq17pb5NG zq*)IOTsx&48)N|2!)cC{%jmAl%p4zN?WD zNqtl_=HfXfaZ64>8C}4aSi#X4j!D)rw3g-AMR{;?SH}r7vUXA>DzR1`$yfXlSQq4kkEi5Mbm&$qP&|r%5#&@<0Mnz}2!{ zj>0w~bY!_W#+9OIm@46iv`yBT545Ks43X8e03Fa!oyJlfzlDo3gTKd4n8qir4m=M} zal-yu0=Whouny%sjR(*%V+ZEL?cG-zv*YlCM&2`(!`Y~I4hQAKY{BEtEmY)1t$?eE|rZ_yck1W(DQ z$8uZEH@n#Z_P2Jj?FOZ;Q@%z(bNH)R)yQbAgnFsR=0oc&FIQgNLIQ9YgCPi4Yn3lQ;j7Y&i+KokhrU7mvMk~sDs!mpmiMrRJK0020efJjJf&I`N`)F{mD*2KJr$+ir>-g=drX%k@MC;s4d!ZH z%Y~ZZ?UgS|kt(YsjAAiF9iT<*C)MhV^_`5S4Ee$SN&8=E6jQYAWj@C~&9vW^?6fwaqaDFBP+%8n z?Qm%o>WUcgr0Zm>QyPWQe2%Z-qP75n93N;%9z{e0IrJ9?G-ix~h_@@Tj|ZtylBvI* zqx0{g+4@?&=4|y8SMYOaPu(9wEtRtv9U7#4m7oTZVea*O>i@6l<<}XdZlC8~xBoWF UM2303QD<@2M_+x-|7D)}FQ*z-^8f$< literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatPow/inputs.npz b/DeeployTest/Tests/testFloatPow/inputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..1a1fbacabc34af081d8f9bdc98d55fa563df21b3 GIT binary patch literal 4360 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 G#(x1#75D1^ literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatPow/network.onnx b/DeeployTest/Tests/testFloatPow/network.onnx new file mode 100644 index 0000000000000000000000000000000000000000..50701ff54058479a21a303d3fe2bef9021b47b20 GIT binary patch literal 151 zcmd<>jZO zDlr3DLYyFN=|zbJ8CpUDj7lsF3=9rVa9vT-P=kboxCA&Dg?PA_I2eIg0EiuuWVoP) LVv}`Z65s^@FPI`; literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatPow/outputs.npz b/DeeployTest/Tests/testFloatPow/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..8e99e8242012c9aa79ebb0ffd34c7f9e655aef23 GIT binary patch literal 4362 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 literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatRMSNorm/inputs.npz b/DeeployTest/Tests/testFloatRMSNorm/inputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..d29eca799662ab9b2269fe481c7ad00ab8e45999 GIT binary patch literal 4360 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 DYV!Eg literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatRMSNorm/network.onnx b/DeeployTest/Tests/testFloatRMSNorm/network.onnx new file mode 100644 index 0000000000000000000000000000000000000000..b42c93baa78095273f1c6b61309f3120ecc7a199 GIT binary patch literal 718 zcmZuuO-sWt7+%+XWUreY5k$*W5K-7s6vc~fcp6N^-Mo}&f>zd~YtmLc?c}f0|7O#6 zwX@!m=OcOF=Rs}UewfbgMBrV0HQ^YVF84zPriumbygPCcl7LYg`670>pzP4R7cq?B zmxE2gnRHY@xb%f&cteI>VYED=ym0PlEcLghL`}mvTtZm~ZI?$5bv@km7~zGzr@bkX zeXgBnu%-c%`4V>{61apvGbg#(T|%io>&am8*3|=HX#K`Cyf9)N0G? zp_O8Kmr3LM;`4k3Bt>XN?Pj=@Dpo<|wgECy_)iHL`?!;@gDvPG19!kgO9XXfJnce0 oYlV6nl*+BL`)j>b`GfU#{uPwFstUG2cT>gp%8^&-alPOB0RWJ^VE_OC literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatRMSNorm/outputs.npz b/DeeployTest/Tests/testFloatRMSNorm/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..d8db8db00ce4a2d963c3c07bd23295664142acc0 GIT binary patch literal 4362 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 W;a(2#W@Q5jFan`DkbVr}FaQ7yeKpYl literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatSqrt/network.onnx b/DeeployTest/Tests/testFloatSqrt/network.onnx new file mode 100644 index 0000000000000000000000000000000000000000..c2f27907fab883e686ede822d403b2c691c8546b GIT binary patch literal 125 zcmd84m^iqSM7W>^2qB3&v2Za6@B#p*_#t!v literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatSqrt/outputs.npz b/DeeployTest/Tests/testFloatSqrt/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..f6d42c73a1d75f2791a98cdec95390f20fbf4bf5 GIT binary patch literal 306 zcmWIWW@Zs#fB;1XYx{VS6+jLMb1{f8Edl$Pk_6;v`Z2!KUFDnYU!FxfBEHz1Oc zp^TwgJteg`xk%kgLER?JL|sQgJuSbeq$n{jKEEg>6(sJKm{Xhz6fe$5EJy|NH4F`O zG<6he703r%5LYzV18D~!0^$ZBUI4@l_GizWv1MRTaQw`&)jq(Rkx7IZmoI^;p`d{g X#6b8tz?+o~B*F-U7C`z5h{FH?*-kbo literal 0 HcmV?d00001 diff --git a/TargetLibraries/Generic/inc/DeeployBasicMath.h b/TargetLibraries/Generic/inc/DeeployBasicMath.h index 288cb419ac..4fbbd00bf8 100644 --- a/TargetLibraries/Generic/inc/DeeployBasicMath.h +++ b/TargetLibraries/Generic/inc/DeeployBasicMath.h @@ -44,6 +44,7 @@ #include "kernel/MatMul.h" #include "kernel/MaxPool.h" #include "kernel/MaxPool1d.h" +#include "kernel/Pow.h" #include "kernel/RMSNorm.h" #include "kernel/RQDiv.h" #include "kernel/RQGELU.h" @@ -51,5 +52,6 @@ #include "kernel/Relu.h" #include "kernel/RequantShift.h" #include "kernel/Softmax.h" +#include "kernel/Sqrt.h" #endif //__DEEPLOY_BASIC_MATH_HEADER_ diff --git a/TargetLibraries/Generic/inc/kernel/Pow.h b/TargetLibraries/Generic/inc/kernel/Pow.h new file mode 100644 index 0000000000..43a0ee62c7 --- /dev/null +++ b/TargetLibraries/Generic/inc/kernel/Pow.h @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * This file implements the element-wise binary power operation. + */ + +/******************************************************************************/ +/* Power (32bit) */ +/******************************************************************************/ + +#ifndef __DEEPLOY_MATH_POW_KERNEL_HEADER_ +#define __DEEPLOY_MATH_POW_KERNEL_HEADER_ + +#include "DeeployBasicMath.h" + +void Pow_fp32_int32_fp32(float32_t *data_in, int32_t exponent, + float32_t *data_out, int32_t size); + +void Pow_fp16_int32_fp16(float16_t *data_in, int32_t exponent, + float16_t *data_out, int32_t size); +#endif diff --git a/TargetLibraries/Generic/inc/kernel/Sqrt.h b/TargetLibraries/Generic/inc/kernel/Sqrt.h new file mode 100644 index 0000000000..5b7239b2d7 --- /dev/null +++ b/TargetLibraries/Generic/inc/kernel/Sqrt.h @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: 2020 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __DEEPLOY_BASIC_MATH_SQRT_KERNEL_HEADER_ +#define __DEEPLOY_BASIC_MATH_SQRT_KERNEL_HEADER_ + +#include "DeeployBasicMath.h" + +/* + * Square root operation - computes sqrt for each element + */ + +/******************************************************************************/ +/* Sqrt */ +/******************************************************************************/ + +void Sqrt_fp32_fp32(float32_t *data_in, float32_t *data_out, int32_t size); + +void Sqrt_fp16_fp16(float16_t *data_in, float16_t *data_out, int32_t size); + +#endif //__DEEPLOY_BASIC_MATH_SQRT_KERNEL_HEADER_ diff --git a/TargetLibraries/Generic/inc/types.h b/TargetLibraries/Generic/inc/types.h index be75317984..813ea9e5a9 100644 --- a/TargetLibraries/Generic/inc/types.h +++ b/TargetLibraries/Generic/inc/types.h @@ -10,5 +10,14 @@ // generic floating point types typedef double float64_t; typedef float float32_t; +// Note: float16_t uses _Float16 (C23) or compiler extensions +// For generic platforms without FP16 hardware support, we use float32_t as +// fallback +#if defined(__FLT16_MANT_DIG__) || defined(__ARM_FP16_FORMAT_IEEE) +typedef _Float16 float16_t; +#else +typedef float + float16_t; // Fallback to float32 for platforms without FP16 support +#endif #endif //__DEEPLOY_BASIC_MATH_TYPES_HEADER_ diff --git a/TargetLibraries/Generic/src/Pow_fp16.c b/TargetLibraries/Generic/src/Pow_fp16.c new file mode 100644 index 0000000000..f8a65c120e --- /dev/null +++ b/TargetLibraries/Generic/src/Pow_fp16.c @@ -0,0 +1,26 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "DeeployBasicMath.h" + +void Pow_fp16_int32_fp16(float16_t *data_in, int32_t exponent, + float16_t *data_out, int32_t size) { + for (int i = 0; i < size; i++) { + float16_t result = 1.0f; + int32_t exp = exponent; + float16_t base = data_in[i]; + + if (exp < 0) { + base = 1.0f / base; + exp = -exp; + } + + for (int32_t j = 0; j < exp; j++) { + result *= base; + } + + data_out[i] = result; + } +} diff --git a/TargetLibraries/Generic/src/Pow_fp32.c b/TargetLibraries/Generic/src/Pow_fp32.c new file mode 100644 index 0000000000..8137f8ba13 --- /dev/null +++ b/TargetLibraries/Generic/src/Pow_fp32.c @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "DeeployBasicMath.h" + +void Pow_fp32_int32_fp32(float32_t *data_in, int32_t exponent, + float32_t *data_out, int32_t size) { + for (int i = 0; i < size; i++) { + float32_t result = 1.0f; + int32_t exp = exponent; + float32_t base = data_in[i]; + + if (exp < 0) { + base = 1.0f / base; + exp = -exp; + } + + for (int32_t j = 0; j < exp; j++) { + result *= base; + } + + data_out[i] = result; + } +} diff --git a/TargetLibraries/Generic/src/Sqrt_fp16.c b/TargetLibraries/Generic/src/Sqrt_fp16.c new file mode 100644 index 0000000000..26eda64d9d --- /dev/null +++ b/TargetLibraries/Generic/src/Sqrt_fp16.c @@ -0,0 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "DeeployBasicMath.h" + +void Sqrt_fp16_fp16(float16_t *data_in, float16_t *data_out, int32_t size) { + for (int i = 0; i < size; i++) { + data_out[i] = sqrtf(data_in[i]); + } +} diff --git a/TargetLibraries/Generic/src/Sqrt_fp32.c b/TargetLibraries/Generic/src/Sqrt_fp32.c new file mode 100644 index 0000000000..06327fda4e --- /dev/null +++ b/TargetLibraries/Generic/src/Sqrt_fp32.c @@ -0,0 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "DeeployBasicMath.h" + +void Sqrt_fp32_fp32(float32_t *data_in, float32_t *data_out, int32_t size) { + for (int i = 0; i < size; i++) { + data_out[i] = sqrtf(data_in[i]); + } +} From 360519c4e360fad3502074988d745c1d719dd7e4 Mon Sep 17 00:00:00 2001 From: lee2716 Date: Thu, 27 Nov 2025 11:18:18 +0100 Subject: [PATCH 04/10] Remove FP16 tests due to lack of native support The current implementation does not support true FP16 arithmetic. Instead, data is cast to FP32 internally. These tests are being removed to avoid misleading results until native half-precision support is implemented. --- DeeployTest/Tests/testFloat16Pow/inputs.npz | Bin 2312 -> 0 bytes DeeployTest/Tests/testFloat16Pow/network.onnx | Bin 159 -> 0 bytes DeeployTest/Tests/testFloat16Pow/outputs.npz | Bin 2314 -> 0 bytes .../Tests/testFloat16RMSNorm/inputs.npz | Bin 2312 -> 0 bytes .../Tests/testFloat16RMSNorm/network.onnx | Bin 718 -> 0 bytes .../Tests/testFloat16RMSNorm/outputs.npz | Bin 2314 -> 0 bytes DeeployTest/Tests/testFloat16Sqrt/inputs.npz | Bin 2312 -> 0 bytes .../Tests/testFloat16Sqrt/network.onnx | Bin 137 -> 0 bytes DeeployTest/Tests/testFloat16Sqrt/outputs.npz | Bin 2314 -> 0 bytes TargetLibraries/Generic/src/Pow_fp16.c | 26 ------------------ TargetLibraries/Generic/src/Sqrt_fp16.c | 13 --------- 11 files changed, 39 deletions(-) delete mode 100644 DeeployTest/Tests/testFloat16Pow/inputs.npz delete mode 100644 DeeployTest/Tests/testFloat16Pow/network.onnx delete mode 100644 DeeployTest/Tests/testFloat16Pow/outputs.npz delete mode 100644 DeeployTest/Tests/testFloat16RMSNorm/inputs.npz delete mode 100644 DeeployTest/Tests/testFloat16RMSNorm/network.onnx delete mode 100644 DeeployTest/Tests/testFloat16RMSNorm/outputs.npz delete mode 100644 DeeployTest/Tests/testFloat16Sqrt/inputs.npz delete mode 100644 DeeployTest/Tests/testFloat16Sqrt/network.onnx delete mode 100644 DeeployTest/Tests/testFloat16Sqrt/outputs.npz delete mode 100644 TargetLibraries/Generic/src/Pow_fp16.c delete mode 100644 TargetLibraries/Generic/src/Sqrt_fp16.c diff --git a/DeeployTest/Tests/testFloat16Pow/inputs.npz b/DeeployTest/Tests/testFloat16Pow/inputs.npz deleted file mode 100644 index a948be1cc2161260853c35585cb460535b4f3eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbVOX;@U}6=rjO1Zgw5waa)iK3WRiT5Gzj}^#tHnHJ#0nt zCHI%fPkjAd5_yjwgNl?8l*NrFc{GxtQ~cZ!S@2Bs-q186nSfEHu3Am?7JHT{Nlojh za&f;UhB)u2_kD88JGR@N*!(H6s-_-Szz}vOJ5l|Juhg2EckSKk4wRG94-tB<$&UBZ z^HiIVt{6O}>_hx38^;&u_biD-8v6uK(vlfJ5k!=etK=0nCn3q}#C`O6oCaFdX>1kT zt$4UfYA?HA>~i&2qSfunKOAexeBuaOGpe13?p0}l;D$08Bii8df(p9UaX}fXkCD3A zF6&ENZZT3}>Vwq6u@zV*i7UV3a8n%koO_x!i5-NTTE^_AoHm|I9K~zQ)d0<}?muy4fpuuIHe{%Aw*0 zYLGUE6YX&@T=z+@@wM^@+R83fkJc5R9gYXNf51Bgqz#nJspolJ`xx?ZU1}aZ-+BcV znT+0a^E5C=c#6~QZN3{$53`x*LAA|yBnh>!Ub0-aau0|t>;O=uY(U?E+sxeRQgbAa z(E_HZ`B`%wJj9l=fX^AT7CdvOl13+)a*p|fVz&3iH*gi4#s0wb0~4xJ)GpI9`3mQ8 zRx0tHN~#R)Ra$JwUNAitLhVX+y(w@fki zKH_uN1QK$U2*yV4)37x8)`x*1?KXGs!ctUl_tg9DBe&HQiN)37Jd+exo^1-JvbvPKY0BTNqNlENSST zLK#mfGl_!J)vodCVKj&hVy>z4Qi9ofJ)6mpcQYdu##g2%8WRbqMuKXcb9|0z`8DHh z#o+A=52HqQ8|Inw{3HJY7>P`8=)nJnmFv*}HaYW*v! z+B%0AsbygbhSshDcEb@vDHn$fDS6UU?_+nQtyb#GC#pS71Ef#*Db_gnNSjDRbLq+B z;b?S%KWK0D#7XV^48e?KZ>c*+%T_~hyt1lhvyBkGSHI#qn`fO~1UBJlYNq9H^fBU| zeS|EcmuNK_E}w;s{BBhH>aWXCDA;5T)h&Wq{1y@3J;Ypc0_bBu-IS|r)jDONCPj=# zNjBo-88{?OL>*ExTnlnV2jllB%nG=R9m=G`dbpjpfb6E`)KB3~@LWGA}G+B+5D!j>KuHhvbWJn7$qjpvDWNV-@b_L$%b52WRP}&A6H)li^=Kq2aJ)92Qyw> z$^rEHbNmvS5aVlQZFp*-tgt|imp<_EQm6mddIUR}ZKJR{@^nsR6%H2qaAB_733b*8 z|2@}QIS6ldTf|sUf%Y*6`9)mS*kpM>m_{XW5x@o~p$UAJ)nG4^9}Barl&nj!o=cRO uIe_4)$@a{tfkENH|I57m>`{8TB(RtNYh^O0_UYRz1ilLTRaJkoGd}{D^yO&) diff --git a/DeeployTest/Tests/testFloat16Pow/network.onnx b/DeeployTest/Tests/testFloat16Pow/network.onnx deleted file mode 100644 index 38690e0ae67b0f9733dab0409a5beab996f09f06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 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 diff --git a/DeeployTest/Tests/testFloat16RMSNorm/network.onnx b/DeeployTest/Tests/testFloat16RMSNorm/network.onnx deleted file mode 100644 index 453350dc1460da79f5c8a7227542b1021f841c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmZuuO-sWt7~WR5Wv{KDlG=cN0#a$#@tmuv98==fjhWm_*cfQ7BT63!ffY zQ<1_DemU3@oJvncgv(G!iZ^8(tc~4(s34wu2Fv`d2~m@H4p&grL7VZ!^I3rHfD*p8 zJI0$K%g2rL0!kXNXehCrkcbifLOngXHt~IP$X6cvJ{&_yf~_c!ZbvR6wG?g4^bt=%IQKM!9p` zsND>l3^CssH~O{JsGHF2?Vz8rtDG`}i|QHprvbw~?c_hfU2qWK4p`_5K?BvFcOhT1 mLcQ-5dabetrOK-OVY!%p1;v`Gf^9IhRPp^{+7)`#=s7=b`@C2H diff --git a/DeeployTest/Tests/testFloat16RMSNorm/outputs.npz b/DeeployTest/Tests/testFloat16RMSNorm/outputs.npz deleted file mode 100644 index 4e41812bd9aea266fed0bad7b3c78253b076e93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2314 zcmbVOyKWOv6uc$`p%jS1A7CnjWFZn!Abe|@2;_!>3R%Pv1&S@(K|%;A|G;O^(s{om zUqOe663m%1clO*hqQO^t9y4?1?jsxRF7Bp;;~@3Z{CvGQUq3!u zeCnn9jzS3*zpt-eznr}3rH|?J@MN}nw;Vnn4D;#Ha5Na6&X?=u^z7|?c`^h3V)|h< zGko=ax|mu2@bJme)6wAY(P;2x@PEI9lv85|qOxirL=|(}v$Bb+jn840DtV#Xbrh#u zD{@Co1u%I;1&&O?F2}AzR}d+-o9)=OxnkfLu407JL41~zXLL1#y6(xt0SjHe(*95a zBaWJVAlc59tj)D7YOSW=$earga>B)i50qG;5Ld7*o}@ID@~6%UI%=6igQ~c=e|DuK zH=A}xX^g$mU5TlR-T9k>Ml3U;kenLZ!w=V)dz{NJ-^c$3fQvznMTQt6b;vxL%W-)! zm;o!T)Wo8r3Tmui+0}T|(5XYllrYv}#UMk2rHm^7hhO66R6Yq}F)oQ3+YtCWK@@TA%*-zR$F znCN1_F-KIDbz8g_=!r2$oePId6*+c|J1R=il)KHDu2Nli1wwss({)|zJ!t$4sHQR^ zIYiz)yQ=C+siUUe*Y!n*UBN|Ehs-*zi%4$INR@E;lsWeWhh;9`@n4!X?>+Qbj(O}> rHdRn*S~c$VAUhaKS!5I;77Z?y@6dlbFM-i7O z8kGy6)}jbGxgnt8e!`RQ2!- zwET{qmi^1WE}!dTv9wt`OQ2<9c5cD60ol3lxmo;wBikmn1>3MfM~#kjvrM*55Vcv+c?8JsGc~@+26bftz>dcH=GPhpaCX0XVE%23+u!iG}Up^2%t-$ zRg_>8doCBiQScNE5Xl$v5v)scmMo|ID6Sc)d>h8A39eu{?$?)_##==q>c6g**#NXlK*YRP|wezVW(|Ze1s2 z9%g^4Z^su}q8h^cnjQ7Qa12_s#ju7piF;xXFOp)=omP=RTZV{(^$Fv7mF5F!gu^%V zD&A16bent{3o&00gv#u!v-B}m;9U_z#l{_Nc=4k!Ecfx@G=^c+Cet? z4xeBRR?vY7XK@s3Z+e@EX~ucV@xBpHp71L;3PQy-X_tsH-PBpU5Gx=RGGPvV$M8dc zoQ(T1liT?V@P`a|2Fq|b-9z_E!$p*}ft}|4j118|Wrnpk&ZDE0zwz^srJWHrslWX* zUdvlWF?2Jh@piNoPUy4QC1J_%o0EdDgYj=U6&gh$t_E-HXylUJ&>o}B2)2=4 z0V}1Ke};_rLknGljns_Wg3F|zjYrsm{l#rj#?T0+Ltq~~hKI0J8o+Dq z*ZBvm1T*LrIZUmEgW?r=s5BOw&Npxp1V{-|e{%<|q=9%J`CXGy&n)KG#You6E(u*! z;v$>3(Splx4?7|r>ifu-Y%(R{q%+9uXO4z_{IKyVN)SMHV{d$f3t_7m&Mx94oNsd^ z@23G6X?~zi700N*X~lTF#s;!)^!4@$*aef!ShIzngF9&8K)sR`C{M6dRBMA>=bK4) z$b(@Xzvwc7x4DOyh3(m1r8c<+j*9UhvTWo!iZ(?6Fh#W2GrYE)0Y znGduNr3Vz#5oP*NfBd7K0!JWE++txYjn-o{`k2F%51|nkkd2N?7$B_pLTLqGEr|3W zK^OtWypR^+9ohqDv%k|bY@x9YWPVOthhNeLINN=7KwzaE23|(_*p%U0KLZvirDI1tItb zk&u{=U!lK9h2uB{K2?W^l|o}{;afa|>)94L!c4$8n6`qQ6i z4L^cFP5LoxV&&Rq)?S@RVtG8P!38u$G>Q25FvutFW{x_L*`!$0$^R_&J9a^$R*pTj zfCok4cxpMSo;!xRw z?~*|HkM>Lo)QeywM&VQXCWLBWti{3cPHB*)Cod$5u(MJOMh7j_|4GxuKK-l+VNHA* z8*Mb>NpMrMu`B-wEy&oMq#FGMchwfXRf)lHb2(Q@y`Gv_jo-^d#TESl?*viUR~r|1 zN%<6~;|%e>h=8%A8spd(bT;2(iy-CDTPha4^y@Un$fI*0+XxhoSr}Z!QW&Gfr!3KP zMIZYRK3xo;7XaiU=VBPdHOOIo_1EzwjDT}`y7((CmHvU>Dvxjls~{(Nforv|>t_U4 zok-9__yR4`yp7*mC&FngBHhFR{30a{a*R{h$)u{Ad!Wbv5--1Nlr}%tte%23tI QyNz&jwPCLQ&~I|)SBQ~XRR910 diff --git a/DeeployTest/Tests/testFloat16Sqrt/network.onnx b/DeeployTest/Tests/testFloat16Sqrt/network.onnx deleted file mode 100644 index 68852495814aa6d93d80650a7c7db96653abd82b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmd3xi~qvgjl(lIT|>UM7f~G2q6nQv2Za6@B#q5 Cq9xS; diff --git a/DeeployTest/Tests/testFloat16Sqrt/outputs.npz b/DeeployTest/Tests/testFloat16Sqrt/outputs.npz deleted file mode 100644 index 11a8727f3f3270a3e3a5efc411fbd6527d546aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2314 zcmbVOX;c>H6$XVUSgWZ-)MFJ_(120I{rf&HB~l-Gf5{ zy9D~p@%w+5cU!K6;D}V&Rd%Vd6UU_&jyP+u8k?0;Q0e57H5^Z+l4d7RV?NH4F;fM~ z-(|4zt+Z3E%nJMqpI{*wRtJ2^FD-AG7>y(LZ}R5dc39l~&#i+pUOt=2bc zDKElSWcKeQshp##trEI|EDDhxXvp_*2OiW|X45dr3M~;|S!M{G!Y#GMe$BPGr&{6z zRO$k~$&ci*L`i*X4far!@;3HM8~8f|5qzk-|ulk}wWm6OyU^9M?WzyDq zlRMMT>H&xk;i06!S2l{LOjHIU$m#MxZ&i*PC`5C9<~Wb#d=Gc=1rjNQx8SeTMx{y_ z0+FK!XN~p2VT=enumGVg)`_ZZ^=wFM0cbj7w4%Rx3@l%^`RFyMn=+p zdFjdvT?%(@XZM#_Y*#-@nfa+PP)5oNvGEh$kt|9<2xahRW{m3&)@q+|+*RGR-D!gK zM^l8+O@t#!O66mIu4?H|D0ZB;1{z*Q27+;uO{>0K=PqgkM{>D570YPLccq17pb5NG zq*)IOTsx&48)N|2!)cC{%jmAl%p4zN?WD zNqtl_=HfXfaZ64>8C}4aSi#X4j!D)rw3g-AMR{;?SH}r7vUXA>DzR1`$yfXlSQq4kkEi5Mbm&$qP&|r%5#&@<0Mnz}2!{ zj>0w~bY!_W#+9OIm@46iv`yBT545Ks43X8e03Fa!oyJlfzlDo3gTKd4n8qir4m=M} zal-yu0=Whouny%sjR(*%V+ZEL?cG-zv*YlCM&2`(!`Y~I4hQAKY{BEtEmY)1t$?eE|rZ_yck1W(DQ z$8uZEH@n#Z_P2Jj?FOZ;Q@%z(bNH)R)yQbAgnFsR=0oc&FIQgNLIQ9YgCPi4Yn3lQ;j7Y&i+KokhrU7mvMk~sDs!mpmiMrRJK0020efJjJf&I`N`)F{mD*2KJr$+ir>-g=drX%k@MC;s4d!ZH z%Y~ZZ?UgS|kt(YsjAAiF9iT<*C)MhV^_`5S4Ee$SN&8=E6jQYAWj@C~&9vW^?6fwaqaDFBP+%8n z?Qm%o>WUcgr0Zm>QyPWQe2%Z-qP75n93N;%9z{e0IrJ9?G-ix~h_@@Tj|ZtylBvI* zqx0{g+4@?&=4|y8SMYOaPu(9wEtRtv9U7#4m7oTZVea*O>i@6l<<}XdZlC8~xBoWF UM2303QD<@2M_+x-|7D)}FQ*z-^8f$< diff --git a/TargetLibraries/Generic/src/Pow_fp16.c b/TargetLibraries/Generic/src/Pow_fp16.c deleted file mode 100644 index f8a65c120e..0000000000 --- a/TargetLibraries/Generic/src/Pow_fp16.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna - * - * SPDX-License-Identifier: Apache-2.0 - */ -#include "DeeployBasicMath.h" - -void Pow_fp16_int32_fp16(float16_t *data_in, int32_t exponent, - float16_t *data_out, int32_t size) { - for (int i = 0; i < size; i++) { - float16_t result = 1.0f; - int32_t exp = exponent; - float16_t base = data_in[i]; - - if (exp < 0) { - base = 1.0f / base; - exp = -exp; - } - - for (int32_t j = 0; j < exp; j++) { - result *= base; - } - - data_out[i] = result; - } -} diff --git a/TargetLibraries/Generic/src/Sqrt_fp16.c b/TargetLibraries/Generic/src/Sqrt_fp16.c deleted file mode 100644 index 26eda64d9d..0000000000 --- a/TargetLibraries/Generic/src/Sqrt_fp16.c +++ /dev/null @@ -1,13 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "DeeployBasicMath.h" - -void Sqrt_fp16_fp16(float16_t *data_in, float16_t *data_out, int32_t size) { - for (int i = 0; i < size; i++) { - data_out[i] = sqrtf(data_in[i]); - } -} From fee847035e6ef7b55b9c7323b1dcf2228e252fac Mon Sep 17 00:00:00 2001 From: lee2716 Date: Thu, 27 Nov 2025 11:44:46 +0100 Subject: [PATCH 05/10] Removing FP16 tests in CI --- .github/workflows/ci-platform-generic.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci-platform-generic.yml b/.github/workflows/ci-platform-generic.yml index 9840aefefb..9533c45a45 100644 --- a/.github/workflows/ci-platform-generic.yml +++ b/.github/workflows/ci-platform-generic.yml @@ -76,9 +76,6 @@ jobs: testFloatPow testFloatSqrt testFloatRMSNorm - testFloat16Pow - testFloat16Sqrt - testFloat16RMSNorm Quant Dequant QuantizedLinear From 8f9062030d86161a876f485fe0bcfed0eb1189bf Mon Sep 17 00:00:00 2001 From: lee2716 Date: Fri, 28 Nov 2025 21:30:43 +0100 Subject: [PATCH 06/10] Refactor Pow for float support, remove FP16, and cleanup parsers This commit addresses code review feedback: - Refactor Pow kernel to use 'powf' from math.h to support floating-point exponents. - Update PowParser to allow tensor exponents instead of forcing constants. - Remove Generic FP16 support and revert types.h changes. - Remove duplicate PowParser/SqrtParser classes. - Enhance RMSNorm tests with larger shapes and non-trivial weights. --- Deeploy/DeeployTypes.py | 11 +-- Deeploy/Targets/Generic/Bindings.py | 6 +- Deeploy/Targets/Generic/Parsers.py | 63 +----------------- .../Generic/Templates/FloatPowTemplate.py | 47 ++++++------- .../Generic/Templates/FloatSqrtTemplate.py | 19 ++---- DeeployTest/Tests/testRMSNorm/inputs.npz | Bin 8460 -> 65800 bytes DeeployTest/Tests/testRMSNorm/network.onnx | Bin 707 -> 1470 bytes DeeployTest/Tests/testRMSNorm/outputs.npz | Bin 8462 -> 65802 bytes TargetLibraries/Generic/inc/kernel/Pow.h | 17 ++--- TargetLibraries/Generic/inc/kernel/Sqrt.h | 2 - TargetLibraries/Generic/inc/types.h | 9 --- TargetLibraries/Generic/src/Pow_fp32.c | 29 ++++---- 12 files changed, 56 insertions(+), 147 deletions(-) diff --git a/Deeploy/DeeployTypes.py b/Deeploy/DeeployTypes.py index 7eb880a262..6f7574d57a 100644 --- a/Deeploy/DeeployTypes.py +++ b/Deeploy/DeeployTypes.py @@ -325,7 +325,7 @@ def fromNode(cls, node: gs.Node): return (cls(name = node.name, shape = node.shape if not isinstance(node, gs.Constant) else node.values.shape)) def has_live_aliases(self, ctxt: NetworkContext) -> bool: - """Checks whether this VariableBuffer has any live ancestors, i.e. buffers that are still live and are aliased by this buffer. + """Checks whether this VariableBuffer has any live aliases, i.e. buffers that are still live and are aliased by this buffer. Parameters ---------- ctxt : NetworkContext @@ -333,7 +333,7 @@ def has_live_aliases(self, ctxt: NetworkContext) -> bool: Returns ------- bool - True if this VariableBuffer has any live ancestors, False otherwise + True if this VariableBuffer has any live aliases, False otherwise """ # Do a breadth-first search across the aliasing double-linked list live = self._live @@ -2562,10 +2562,10 @@ def codeTransform(self, verbose: CodeGenVerbosity = _NoVerbosity): self.ctxt = layer.codeTransform(self.ctxt, verbose) self.transformed = True - def _mapNode(self, node: gs.Node) -> Union[ONNXLayer, Any]: + def _selectEngine(self, node: gs.Node) -> DeploymentEngine: for engine in self.Platform.engines: if node.op in engine.Mapping: - return engine.Mapping[node.op](node) + return engine raise RuntimeError(f"No mapping found for node {node.name} with op type {node.op}") def _bindLayers(self): @@ -2582,7 +2582,8 @@ def _bindLayers(self): flatSchedule += subGraph for node in flatSchedule: - layer = self._mapNode(node) + engine = self._selectEngine(node) + layer = engine.Mapping[node.op](node) if isinstance(layer, ONNXLayer): log.debug(f" {SUCCESS_MARK} Bind {node.name} to layer {layer.__class__.__name__}") self.layerBinding[layer.node.name] = layer diff --git a/Deeploy/Targets/Generic/Bindings.py b/Deeploy/Targets/Generic/Bindings.py index 8c73ad6e13..41bf9bea1d 100644 --- a/Deeploy/Targets/Generic/Bindings.py +++ b/Deeploy/Targets/Generic/Bindings.py @@ -7,7 +7,7 @@ from Deeploy.AbstractDataTypes import PointerClass from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \ MemoryManagementGeneration, MemoryPassthroughGeneration -from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, float16_t, \ +from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, \ float32_t, int8_t, int32_t, uint8_t from Deeploy.DeeployTypes import CodeTransformation, NodeBinding from Deeploy.FutureExtension.CodeTransformationPasses.FutureCodeTransformation import FutureGeneration @@ -121,15 +121,11 @@ BasicPowBindings = [ NodeBinding(DummyChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), FloatPowTemplate.referenceTemplate, BasicTransformer), - NodeBinding(DummyChecker([PointerClass(float16_t), PointerClass(float16_t)], [PointerClass(float16_t)]), - FloatPowTemplate.referenceTemplate, BasicTransformer) ] BasicSqrtBindings = [ NodeBinding(DummyChecker([PointerClass(float32_t)], [PointerClass(float32_t)]), FloatSqrtTemplate.referenceTemplate, BasicTransformer), - NodeBinding(DummyChecker([PointerClass(float16_t)], [PointerClass(float16_t)]), FloatSqrtTemplate.referenceTemplate, - BasicTransformer) ] BasicDivBindings = [ diff --git a/Deeploy/Targets/Generic/Parsers.py b/Deeploy/Targets/Generic/Parsers.py index 2f2ed041eb..a52d0ad171 100644 --- a/Deeploy/Targets/Generic/Parsers.py +++ b/Deeploy/Targets/Generic/Parsers.py @@ -8,7 +8,7 @@ import numpy as np import onnx_graphsurgeon as gs -from Deeploy.DeeployTypes import NetworkContext, NodeParser, VariableBuffer +from Deeploy.DeeployTypes import NetworkContext, NodeParser, VariableBuffer, ConstantBuffer class ConcatParser(NodeParser): @@ -2000,29 +2000,6 @@ def parseNodeCtxt(self, return ctxt, True -class SqrtParser(NodeParser): - - def __init__(self): - super().__init__() - - def parseNode(self, node: gs.Node) -> bool: - return node.op == 'Sqrt' and len(node.inputs) == 1 and len(node.outputs) == 1 - - def parseNodeCtxt(self, - ctxt: NetworkContext, - node: gs.Node, - channels_first: bool = True) -> Tuple[NetworkContext, bool]: - - data_in = ctxt.lookup(node.inputs[0].name) - data_out = ctxt.lookup(node.outputs[0].name) - - self.operatorRepresentation['data_in'] = data_in.name - self.operatorRepresentation['data_out'] = data_out.name - self.operatorRepresentation['size'] = int(np.prod(data_in.shape)) - - return ctxt, True - - class DivParser(NodeParser): def __init__(self): @@ -2808,44 +2785,6 @@ def parseNodeCtxt(self, return ctxt, False -############################ - - -class PowParser(NodeParser): - - def __init__(self): - super().__init__() - - def parseNode(self, node: gs.Node) -> bool: - return node.op == 'Pow' and len(node.inputs) == 2 and len(node.outputs) == 1 - - def parseNodeCtxt(self, - ctxt: NetworkContext, - node: gs.Node, - channels_first: bool = True) -> Tuple[NetworkContext, bool]: - - data_in = ctxt.lookup(node.inputs[0].name) - exponent = node.inputs[1] - data_out = ctxt.lookup(node.outputs[0].name) - - self.operatorRepresentation['data_in'] = data_in.name - self.operatorRepresentation['data_out'] = data_out.name - - # Check if exponent is a constant - if isinstance(exponent, gs.Constant): - exp_value = float(exponent.values) - self.operatorRepresentation['exponent'] = exp_value - self.operatorRepresentation['is_constant_exp'] = True - else: - exp_tensor = ctxt.lookup(exponent.name) - self.operatorRepresentation['exponent'] = exp_tensor.name - self.operatorRepresentation['is_constant_exp'] = False - - self.operatorRepresentation['size'] = int(np.prod(data_in.shape)) - - return ctxt, True - - class SqrtParser(NodeParser): def __init__(self): diff --git a/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py b/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py index 6af568a389..956c602c63 100644 --- a/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py +++ b/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py @@ -1,48 +1,43 @@ # SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna # # SPDX-License-Identifier: Apache-2.0 - from typing import Dict, List, Tuple - import numpy as np - from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation - class _PowTemplate(NodeTemplate): - def alignToContext(self, ctxt: NetworkContext, operatorRepresentation: OperatorRepresentation) -> Tuple[NetworkContext, Dict, List[str]]: - # Get input and output tensors data_in = ctxt.lookup(operatorRepresentation['data_in']) + exponent = ctxt.lookup(operatorRepresentation['exponent']) data_out = ctxt.lookup(operatorRepresentation['data_out']) - - # Get data type (fp32 or fp16) + + # Get data type (fp32) data_type = data_in._type.typeName operatorRepresentation['data_type'] = data_type - - # Exponent must be a constant integer - if 'exponent' in operatorRepresentation: - exponent_input = operatorRepresentation['exponent'] - if isinstance(exponent_input, str): - # It's a tensor name - not supported for integer exponent version - raise ValueError("Tensor exponent not supported. Use constant integer exponent.") - else: - # Convert to integer - operatorRepresentation['exponent_value'] = int(exponent_input) - + # Calculate size - operatorRepresentation['size'] = int(np.prod(data_in.shape)) - + input_size = int(np.prod(data_in.shape)) + exponent_size = int(np.prod(exponent.shape)) + operatorRepresentation['size'] = input_size + + # Check if exponent is scalar (broadcasting) + if exponent_size == 1: + operatorRepresentation['is_scalar'] = True + # Get the full variable name with prefix + exponent_name = operatorRepresentation['exponent'] + operatorRepresentation['exponent_scalar'] = f"DeeployNetwork_{exponent_name}[0]" + else: + operatorRepresentation['is_scalar'] = False + return ctxt, operatorRepresentation, [] - referenceTemplate = _PowTemplate(""" // Pow (Name: ${nodeName}, Op: ${nodeOp}) -% if 'float32' in data_type: -Pow_fp32_int32_fp32(${data_in}, ${exponent_value}, ${data_out}, ${size}); -% elif 'float16' in data_type: -Pow_fp16_int32_fp16(${data_in}, ${exponent_value}, ${data_out}, ${size}); +% if is_scalar: +Pow_fp32_scalar_fp32(${data_in}, ${exponent_scalar}, ${data_out}, ${size}); +% else: +Pow_fp32_fp32_fp32(${data_in}, ${exponent}, ${data_out}, ${size}); % endif """) diff --git a/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py b/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py index aaddc7f582..99e712a02d 100644 --- a/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py +++ b/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py @@ -1,38 +1,27 @@ # SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna # # SPDX-License-Identifier: Apache-2.0 - from typing import Dict, List, Tuple - import numpy as np - from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation - class _SqrtTemplate(NodeTemplate): - def alignToContext(self, ctxt: NetworkContext, operatorRepresentation: OperatorRepresentation) -> Tuple[NetworkContext, Dict, List[str]]: - # Get input and output tensors data_in = ctxt.lookup(operatorRepresentation['data_in']) data_out = ctxt.lookup(operatorRepresentation['data_out']) - - # Get data type (fp32 or fp16) + + # Get data type (fp32) data_type = data_in._type.typeName operatorRepresentation['data_type'] = data_type - + # Calculate size operatorRepresentation['size'] = int(np.prod(data_in.shape)) - + return ctxt, operatorRepresentation, [] - referenceTemplate = _SqrtTemplate(""" // Sqrt (Name: ${nodeName}, Op: ${nodeOp}) -% if 'float32' in data_type: Sqrt_fp32_fp32(${data_in}, ${data_out}, ${size}); -% elif 'float16' in data_type: -Sqrt_fp16_fp16(${data_in}, ${data_out}, ${size}); -% endif """) diff --git a/DeeployTest/Tests/testRMSNorm/inputs.npz b/DeeployTest/Tests/testRMSNorm/inputs.npz index e84844b77cc9327a2b5e28ec0d25da1411e5487a..60df101e2e3eddabcb19cd87b526795223d5c49e 100644 GIT binary patch literal 65800 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 HbEM=Oj7ihB diff --git a/DeeployTest/Tests/testRMSNorm/outputs.npz b/DeeployTest/Tests/testRMSNorm/outputs.npz index 9a3ff0a0c1cb001b46371ca3e19894cab35951f4..021a46629488c2f5272517b904e52ac990656ba1 100644 GIT binary patch literal 65802 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

PNOhVt{O~9Mx1GJ9!gNv|ja1z4-a~gdx{;0E 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 diff --git a/TargetLibraries/Generic/inc/kernel/Pow.h b/TargetLibraries/Generic/inc/kernel/Pow.h index 43a0ee62c7..fbb79d4579 100644 --- a/TargetLibraries/Generic/inc/kernel/Pow.h +++ b/TargetLibraries/Generic/inc/kernel/Pow.h @@ -8,18 +8,19 @@ * This file implements the element-wise binary power operation. */ -/******************************************************************************/ -/* Power (32bit) */ -/******************************************************************************/ - #ifndef __DEEPLOY_MATH_POW_KERNEL_HEADER_ #define __DEEPLOY_MATH_POW_KERNEL_HEADER_ #include "DeeployBasicMath.h" -void Pow_fp32_int32_fp32(float32_t *data_in, int32_t exponent, - float32_t *data_out, int32_t size); +void Pow_fp32_fp32_fp32(const float32_t *__restrict__ data_in, + const float32_t *__restrict__ exponent, + float32_t *__restrict__ data_out, + int32_t size); + +void Pow_fp32_scalar_fp32(const float32_t *__restrict__ data_in, + float32_t exponent, + float32_t *__restrict__ data_out, + int32_t size); -void Pow_fp16_int32_fp16(float16_t *data_in, int32_t exponent, - float16_t *data_out, int32_t size); #endif diff --git a/TargetLibraries/Generic/inc/kernel/Sqrt.h b/TargetLibraries/Generic/inc/kernel/Sqrt.h index 5b7239b2d7..2c14e43bd3 100644 --- a/TargetLibraries/Generic/inc/kernel/Sqrt.h +++ b/TargetLibraries/Generic/inc/kernel/Sqrt.h @@ -19,6 +19,4 @@ void Sqrt_fp32_fp32(float32_t *data_in, float32_t *data_out, int32_t size); -void Sqrt_fp16_fp16(float16_t *data_in, float16_t *data_out, int32_t size); - #endif //__DEEPLOY_BASIC_MATH_SQRT_KERNEL_HEADER_ diff --git a/TargetLibraries/Generic/inc/types.h b/TargetLibraries/Generic/inc/types.h index 813ea9e5a9..be75317984 100644 --- a/TargetLibraries/Generic/inc/types.h +++ b/TargetLibraries/Generic/inc/types.h @@ -10,14 +10,5 @@ // generic floating point types typedef double float64_t; typedef float float32_t; -// Note: float16_t uses _Float16 (C23) or compiler extensions -// For generic platforms without FP16 hardware support, we use float32_t as -// fallback -#if defined(__FLT16_MANT_DIG__) || defined(__ARM_FP16_FORMAT_IEEE) -typedef _Float16 float16_t; -#else -typedef float - float16_t; // Fallback to float32 for platforms without FP16 support -#endif #endif //__DEEPLOY_BASIC_MATH_TYPES_HEADER_ diff --git a/TargetLibraries/Generic/src/Pow_fp32.c b/TargetLibraries/Generic/src/Pow_fp32.c index 8137f8ba13..d5d7153c91 100644 --- a/TargetLibraries/Generic/src/Pow_fp32.c +++ b/TargetLibraries/Generic/src/Pow_fp32.c @@ -5,23 +5,22 @@ */ #include "DeeployBasicMath.h" +#include -void Pow_fp32_int32_fp32(float32_t *data_in, int32_t exponent, - float32_t *data_out, int32_t size) { +void Pow_fp32_fp32_fp32(const float32_t *__restrict__ data_in, + const float32_t *__restrict__ exponent, + float32_t *__restrict__ data_out, + int32_t size) { for (int i = 0; i < size; i++) { - float32_t result = 1.0f; - int32_t exp = exponent; - float32_t base = data_in[i]; - - if (exp < 0) { - base = 1.0f / base; - exp = -exp; - } - - for (int32_t j = 0; j < exp; j++) { - result *= base; - } + data_out[i] = powf(data_in[i], exponent[i]); + } +} - data_out[i] = result; +void Pow_fp32_scalar_fp32(const float32_t *__restrict__ data_in, + float32_t exponent, + float32_t *__restrict__ data_out, + int32_t size) { + for (int i = 0; i < size; i++) { + data_out[i] = powf(data_in[i], exponent); } } From 4834c2a4f7841855504ffb4d6746acfd99103099 Mon Sep 17 00:00:00 2001 From: lee2716 Date: Fri, 28 Nov 2025 22:22:43 +0100 Subject: [PATCH 07/10] recover the teseRMSNorm and updated 128*128 version of testFloatRMSNorm --- DeeployTest/Tests/testFloatRMSNorm/inputs.npz | Bin 4360 -> 65800 bytes .../Tests/testFloatRMSNorm/network.onnx | Bin 718 -> 2905 bytes .../Tests/testFloatRMSNorm/outputs.npz | Bin 4362 -> 65802 bytes DeeployTest/Tests/testRMSNorm/inputs.npz | Bin 65800 -> 8460 bytes DeeployTest/Tests/testRMSNorm/network.onnx | Bin 1470 -> 707 bytes DeeployTest/Tests/testRMSNorm/outputs.npz | Bin 65802 -> 8462 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/DeeployTest/Tests/testFloatRMSNorm/inputs.npz b/DeeployTest/Tests/testFloatRMSNorm/inputs.npz index d29eca799662ab9b2269fe481c7ad00ab8e45999..60df101e2e3eddabcb19cd87b526795223d5c49e 100644 GIT binary patch literal 65800 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 delta 336 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

BBmaxhl}3A7%KP$wyetwA&c%>Iq6xQkXx- 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 LKUVUOA|n3>9Z;>E literal 4362 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 HbEM=Oj7ihB literal 1470 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 literal 65802 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

PNOhVt{O~9Mx1GJ9!gNv|ja1z4-a~gdx{;0E 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 Date: Thu, 4 Dec 2025 18:22:34 +0100 Subject: [PATCH 08/10] Fix: Address review comments (dynamic types, vector Pow test, CI update, changelog) --- .github/workflows/ci-platform-generic.yml | 3 +- .gitignore | 2 ++ Deeploy/Targets/Generic/Bindings.py | 4 +-- Deeploy/Targets/Generic/Parsers.py | 12 +------- .../Generic/Templates/FloatPowTemplate.py | 28 ++++++++++++++---- .../Generic/Templates/FloatSqrtTemplate.py | 16 +++++++--- .../Tests/testFloatPowScalar/inputs.npz | Bin 0 -> 4360 bytes .../Tests/testFloatPowScalar/network.onnx | Bin 0 -> 151 bytes .../outputs.npz | Bin .../Tests/testFloatPowVector/inputs.npz | Bin 0 -> 2052 bytes .../Tests/testFloatPowVector/network.onnx | 23 ++++++++++++++ .../Tests/testFloatPowVector/outputs.npz | Bin 0 -> 1038 bytes TargetLibraries/Generic/inc/kernel/Pow.h | 10 +++---- TargetLibraries/Generic/src/Pow_fp32.c | 10 +++---- 14 files changed, 72 insertions(+), 36 deletions(-) create mode 100644 DeeployTest/Tests/testFloatPowScalar/inputs.npz create mode 100644 DeeployTest/Tests/testFloatPowScalar/network.onnx rename DeeployTest/Tests/{testFloatPow => testFloatPowScalar}/outputs.npz (100%) create mode 100644 DeeployTest/Tests/testFloatPowVector/inputs.npz create mode 100644 DeeployTest/Tests/testFloatPowVector/network.onnx create mode 100644 DeeployTest/Tests/testFloatPowVector/outputs.npz diff --git a/.github/workflows/ci-platform-generic.yml b/.github/workflows/ci-platform-generic.yml index 9533c45a45..fb39a9bd53 100644 --- a/.github/workflows/ci-platform-generic.yml +++ b/.github/workflows/ci-platform-generic.yml @@ -73,7 +73,8 @@ jobs: testFloatSoftmax testFloatTranspose testFloatMul - testFloatPow + testFloatPowScalar + testFloatPowVector testFloatSqrt testFloatRMSNorm Quant diff --git a/.gitignore b/.gitignore index 1115bfa5ba..e0e99b33ba 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,8 @@ package-lock.json .mypy_cache node_modules +.venv/* + compile_commands.json docs/_autosummary diff --git a/Deeploy/Targets/Generic/Bindings.py b/Deeploy/Targets/Generic/Bindings.py index 41bf9bea1d..1807864dfc 100644 --- a/Deeploy/Targets/Generic/Bindings.py +++ b/Deeploy/Targets/Generic/Bindings.py @@ -7,8 +7,8 @@ from Deeploy.AbstractDataTypes import PointerClass from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \ MemoryManagementGeneration, MemoryPassthroughGeneration -from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, \ - float32_t, int8_t, int32_t, uint8_t +from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, float32_t, \ + int8_t, int32_t, uint8_t from Deeploy.DeeployTypes import CodeTransformation, NodeBinding from Deeploy.FutureExtension.CodeTransformationPasses.FutureCodeTransformation import FutureGeneration from Deeploy.Targets.Generic.Templates import AddTemplate, BatchNormalizationTemplate, ConcatTemplate, ConvTemplate, \ diff --git a/Deeploy/Targets/Generic/Parsers.py b/Deeploy/Targets/Generic/Parsers.py index a52d0ad171..bc69e64dae 100644 --- a/Deeploy/Targets/Generic/Parsers.py +++ b/Deeploy/Targets/Generic/Parsers.py @@ -8,7 +8,7 @@ import numpy as np import onnx_graphsurgeon as gs -from Deeploy.DeeployTypes import NetworkContext, NodeParser, VariableBuffer, ConstantBuffer +from Deeploy.DeeployTypes import ConstantBuffer, NetworkContext, NodeParser, VariableBuffer class ConcatParser(NodeParser): @@ -1985,16 +1985,6 @@ def parseNodeCtxt(self, self.operatorRepresentation['data_in'] = data_in.name self.operatorRepresentation['exponent'] = exponent_tensor.name self.operatorRepresentation['data_out'] = data_out.name - - # Extract exponent value from the constant tensor - if isinstance(exponent_tensor, ConstantBuffer): - exp_value = int(exponent_tensor.values.flatten()[0]) - self.operatorRepresentation['exponent_value'] = exp_value - else: - # Tensor exponent not supported - raise ValueError(f"Node {node.name}: Exponent must be a constant. " - f"Variable tensor exponents are not supported.") - self.operatorRepresentation['size'] = int(np.prod(data_in.shape)) return ctxt, True diff --git a/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py b/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py index 956c602c63..83d177cc39 100644 --- a/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py +++ b/Deeploy/Targets/Generic/Templates/FloatPowTemplate.py @@ -2,26 +2,34 @@ # # SPDX-License-Identifier: Apache-2.0 from typing import Dict, List, Tuple + import numpy as np + from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation + class _PowTemplate(NodeTemplate): + def alignToContext(self, ctxt: NetworkContext, operatorRepresentation: OperatorRepresentation) -> Tuple[NetworkContext, Dict, List[str]]: # Get input and output tensors data_in = ctxt.lookup(operatorRepresentation['data_in']) exponent = ctxt.lookup(operatorRepresentation['exponent']) data_out = ctxt.lookup(operatorRepresentation['data_out']) - + # Get data type (fp32) data_type = data_in._type.typeName operatorRepresentation['data_type'] = data_type - + + # Get type width dynamically (e.g., 32, 64) + type_width = data_in._type.referencedType.typeWidth + operatorRepresentation['type_width'] = type_width + # Calculate size input_size = int(np.prod(data_in.shape)) exponent_size = int(np.prod(exponent.shape)) operatorRepresentation['size'] = input_size - + # Check if exponent is scalar (broadcasting) if exponent_size == 1: operatorRepresentation['is_scalar'] = True @@ -29,15 +37,23 @@ def alignToContext(self, ctxt: NetworkContext, exponent_name = operatorRepresentation['exponent'] operatorRepresentation['exponent_scalar'] = f"DeeployNetwork_{exponent_name}[0]" else: + # Since currently the kernel only supports equally sized base-exponent data, + # for non-scalar, let's add a size check here (length of data_in should be equal to exponent length). + if input_size != exponent_size: + raise ValueError(f"Pow operator mismatch: input size ({input_size}) " + f"must equal exponent size ({exponent_size}) for non-scalar exponents.") + operatorRepresentation['is_scalar'] = False - + operatorRepresentation['exponent_scalar'] = "NULL" + return ctxt, operatorRepresentation, [] + referenceTemplate = _PowTemplate(""" // Pow (Name: ${nodeName}, Op: ${nodeOp}) % if is_scalar: -Pow_fp32_scalar_fp32(${data_in}, ${exponent_scalar}, ${data_out}, ${size}); +Pow_fp${type_width}_scalar_fp${type_width}(${data_in}, ${exponent_scalar}, ${data_out}, ${size}); % else: -Pow_fp32_fp32_fp32(${data_in}, ${exponent}, ${data_out}, ${size}); +Pow_fp${type_width}_fp${type_width}_fp${type_width}(${data_in}, ${exponent}, ${data_out}, ${size}); % endif """) diff --git a/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py b/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py index 99e712a02d..99d7ba0475 100644 --- a/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py +++ b/Deeploy/Targets/Generic/Templates/FloatSqrtTemplate.py @@ -2,26 +2,34 @@ # # SPDX-License-Identifier: Apache-2.0 from typing import Dict, List, Tuple + import numpy as np + from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation + class _SqrtTemplate(NodeTemplate): + def alignToContext(self, ctxt: NetworkContext, operatorRepresentation: OperatorRepresentation) -> Tuple[NetworkContext, Dict, List[str]]: # Get input and output tensors data_in = ctxt.lookup(operatorRepresentation['data_in']) data_out = ctxt.lookup(operatorRepresentation['data_out']) - + # Get data type (fp32) data_type = data_in._type.typeName operatorRepresentation['data_type'] = data_type - + + type_width = data_in._type.referencedType.typeWidth + operatorRepresentation['type_width'] = type_width + # Calculate size operatorRepresentation['size'] = int(np.prod(data_in.shape)) - + return ctxt, operatorRepresentation, [] + referenceTemplate = _SqrtTemplate(""" // Sqrt (Name: ${nodeName}, Op: ${nodeOp}) -Sqrt_fp32_fp32(${data_in}, ${data_out}, ${size}); +Sqrt_fp${type_width}_fp${type_width}(${data_in}, ${data_out}, ${size}); """) diff --git a/DeeployTest/Tests/testFloatPowScalar/inputs.npz b/DeeployTest/Tests/testFloatPowScalar/inputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..1a1fbacabc34af081d8f9bdc98d55fa563df21b3 GIT binary patch literal 4360 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 G#(x1#75D1^ literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatPowScalar/network.onnx b/DeeployTest/Tests/testFloatPowScalar/network.onnx new file mode 100644 index 0000000000000000000000000000000000000000..50701ff54058479a21a303d3fe2bef9021b47b20 GIT binary patch literal 151 zcmd<>jZO zDlr3DLYyFN=|zbJ8CpUDj7lsF3=9rVa9vT-P=kboxCA&Dg?PA_I2eIg0EiuuWVoP) LVv}`Z65s^@FPI`; literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatPow/outputs.npz b/DeeployTest/Tests/testFloatPowScalar/outputs.npz similarity index 100% rename from DeeployTest/Tests/testFloatPow/outputs.npz rename to DeeployTest/Tests/testFloatPowScalar/outputs.npz diff --git a/DeeployTest/Tests/testFloatPowVector/inputs.npz b/DeeployTest/Tests/testFloatPowVector/inputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..fe8942ac678c1914568e74fe4905c63fcc5f771a GIT binary patch literal 2052 zcmd5-YgCli6`kQF4^fDNP(U6k@(5}HBcd~Be;^7-&@nM#ffVF12=a75Ku|Lvj|ieX zMFb12P!I`3L0-b#(Eu?bQACUqFtw%_i4AB|6-6!7wYrk7)j$2!eeXGUoqf*zclX_5 zPh}MW?=8%EGUp{_GG!ibHneyGUPxekU_f~Eis;zAe4fs~=-JWP_AClFf8-_h;qwxB zDV8CUxL~Q}S~E*w=qgKFGt1BzX}mNrIv_?GBAMkk21dq7X85?Uz*xylZDnU`=3r~K zW@cO4n(a6HAE0SA^g9eHIiq&mh7!wF=&nfxie4p>&X@}K@bD-mE&4EeH;1#al_tb)TbFS2ZMM;CeEsv-a-M|UDJYX?0te-E#=w@|>?LQ>Uh!fW0X zt;;I|{dg8`wF}VVWC$x`hBjAM+EsOrey^s*S!DiMH2q^cS}*idjQ3YK{bdloDb~Xp zQv*(Acol@Mm+9T89SCmhB)0}r@NII4yR?cL1cT(ePeF4WZlFS=o>njwZuP5VQg$z; z0~0IZSDJ;W&~Gp`KNUG960~2Q!1vdVL;m?RCEd5Dyx}vjE3L*szoXQ%EgbG^tKqS3 z7kd775c$t!WIlNcOYM8<^x$u4PxCGm=$BG}T`F3R7UMgf6Ks?xDA9b7viPc;hwvt> z#vI^ZtWIvvYLMvFjrM1%xS75lpMRJSucRNS5K909_9m)~F^> zX^#?Y?ztk$K_9F}3!2>-ct2Ygq4gt_+PV>yaxbin4~Hb;2-c@*;DN~ib=7V_XQ>Dy z-XU~p#1Xp{9?;8Mgy!@QsW{&hE+@+{XX9N`&yk>Gp)<@ETXW+6T+n1D+PAEw)i1uF zkFw%X2Y(#QHs{2@60i8K>A%H0cSgLDq}Z5fNp$@Gt9o37U9zLf1T9>AUH1<*4phfJ*ndw;5gpy{GKs=AkLZOUXHWJI&*?g)|K z+AXU4bh-TF^ZJ|Jb%tL}1RFcl3&TGIunEsjGTbkr>@r)n;L=%Y+hamQ zEl*fcixUR5RN;SD4Ch`xJNI0IO=$tF_m7L<@|Rok12<1}WxeT3VolgF>LEhsyM;*lp0! zIS%o~9F*TUBcHf)Qtn^4kInB8;L(-kn18^$DYRTiWe5e;sxWf#sEv2Ftu zCb=??HFvjAnzV{lAs5+3)$(&MK7sAor_?~#;kG*lXSan@NwOLB+Y2%G2O+z9tb=Ku zHl?K&PuZ~od+v6DNaVJqudB9L!mjFTDa5_DSU$dm6F8bHrgc+Tag`qhrLSZ!bYoae zMFvwoQiq~ady&227kKIACS zRm*kDd2B`Bb@}i-OA2&cjQSKuHl-cMT%_Z;7weD1Zc5~nbrLaEK`7HP5V>k9DI&EF zpeOkdZP+tKcWR25*psg$Q2uY``_^G+vy4BRe__S{dGXi6pB;V+8NX}BsDJqlh&@%+ QW_wCAD{kgYnKN7c6Ti_B2mk;8 literal 0 HcmV?d00001 diff --git a/DeeployTest/Tests/testFloatPowVector/network.onnx b/DeeployTest/Tests/testFloatPowVector/network.onnx new file mode 100644 index 0000000000..91be88483c --- /dev/null +++ b/DeeployTest/Tests/testFloatPowVector/network.onnx @@ -0,0 +1,23 @@ + +deeploy_test_generator:· +3 +data_in +exponentdata_outPow_Vector_Test"Powtest_float_pow_vectorZ! +data_in + + + + +Z" +exponent + + + + +b" +data_out + + + + +B \ No newline at end of file diff --git a/DeeployTest/Tests/testFloatPowVector/outputs.npz b/DeeployTest/Tests/testFloatPowVector/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..ebe9468d52ebe19c364c325dd58ff174e50b0712 GIT binary patch literal 1038 zcmbW0e^AqP7{|Y3VCcCJMe$nY(#Dr?{F-ji8lU%P)}b8Y4a3xmttF#@z=+{svE>2> zXpEg8Q2t;B9^%0<$-JT#pnz0Z1RUNKWr$u%1{z!^#)WPAPyh5!@8{P&ujl#qtxV+l z1~HHH4D+M0(PHH?jJK9DK}?z^U!&IV%a6#(HF20_54rc(d-tk(+m0mVZVqE)ir6%* zVNV__6R`61jjTw(rt9VDQ7kq1@P&=u|YcWo&{HB)BYips^t$=I!O=M37Qs!0zL}EU@60X8*M;EzUnu=-L z2qJx~sPTUc>YX;UGbhlHVMWw{1D7j9Ae@j>enJ6u{Gp_mXZ>hXH%l{RoAF`PE^ssU z;SRSEud=0RJ*~vBDjV4ca&WlQ0iL=#E+M%e!_$HE*ONBLf}_A$R*YCn6*7fp^n|R% z66sPLkH3WY(W?-CeG233G%4$}lgQhru*-D-j+E0d@=YiZiLsukz*fVzm=b?RPU<7E zxF8&>#s_i!ft!khgy`zY#Nd<^FV3)(=XZj9U*C#nTl&e3?tD5D8-SWkc08#qN4wLC z;{%x(u1dm4a4A~Ob5OVt2^&uibxbMdd!?i~_XuQFC20TI0m&;xkfi$1(FGOO=%tYK zuU7OP)nVv&H+DzA2kqQJIBu`P{+09ODM>PRRye?I=)j?XCX5c%D%KscVdDNc+0G9o z)gxv+KVXJ#ibKPHa?)nrFuC{Je!B3|CyIAx)c7L6iWk;}(T`ns5Tj~__R8Pn{&o|j zH_EYCkxSEzeQfg@r2AXJ0CjwA6>zGivR!s literal 0 HcmV?d00001 diff --git a/TargetLibraries/Generic/inc/kernel/Pow.h b/TargetLibraries/Generic/inc/kernel/Pow.h index fbb79d4579..f1d64859ed 100644 --- a/TargetLibraries/Generic/inc/kernel/Pow.h +++ b/TargetLibraries/Generic/inc/kernel/Pow.h @@ -13,14 +13,12 @@ #include "DeeployBasicMath.h" -void Pow_fp32_fp32_fp32(const float32_t *__restrict__ data_in, +void Pow_fp32_fp32_fp32(const float32_t *__restrict__ data_in, const float32_t *__restrict__ exponent, - float32_t *__restrict__ data_out, - int32_t size); + float32_t *__restrict__ data_out, int32_t size); -void Pow_fp32_scalar_fp32(const float32_t *__restrict__ data_in, - float32_t exponent, - float32_t *__restrict__ data_out, +void Pow_fp32_scalar_fp32(const float32_t *__restrict__ data_in, + float32_t exponent, float32_t *__restrict__ data_out, int32_t size); #endif diff --git a/TargetLibraries/Generic/src/Pow_fp32.c b/TargetLibraries/Generic/src/Pow_fp32.c index d5d7153c91..89c07c6bda 100644 --- a/TargetLibraries/Generic/src/Pow_fp32.c +++ b/TargetLibraries/Generic/src/Pow_fp32.c @@ -7,18 +7,16 @@ #include "DeeployBasicMath.h" #include -void Pow_fp32_fp32_fp32(const float32_t *__restrict__ data_in, +void Pow_fp32_fp32_fp32(const float32_t *__restrict__ data_in, const float32_t *__restrict__ exponent, - float32_t *__restrict__ data_out, - int32_t size) { + float32_t *__restrict__ data_out, int32_t size) { for (int i = 0; i < size; i++) { data_out[i] = powf(data_in[i], exponent[i]); } } -void Pow_fp32_scalar_fp32(const float32_t *__restrict__ data_in, - float32_t exponent, - float32_t *__restrict__ data_out, +void Pow_fp32_scalar_fp32(const float32_t *__restrict__ data_in, + float32_t exponent, float32_t *__restrict__ data_out, int32_t size) { for (int i = 0; i < size; i++) { data_out[i] = powf(data_in[i], exponent); From 8ecf929d1964bc3817d924354ea8501b24b49f5c Mon Sep 17 00:00:00 2001 From: lee2716 Date: Fri, 5 Dec 2025 11:26:47 +0100 Subject: [PATCH 09/10] remove the testFloatPow, which has been renamed to testFloatPowScalar --- DeeployTest/Tests/testFloatPow/inputs.npz | Bin 4360 -> 0 bytes DeeployTest/Tests/testFloatPow/network.onnx | Bin 151 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 DeeployTest/Tests/testFloatPow/inputs.npz delete mode 100644 DeeployTest/Tests/testFloatPow/network.onnx diff --git a/DeeployTest/Tests/testFloatPow/inputs.npz b/DeeployTest/Tests/testFloatPow/inputs.npz deleted file mode 100644 index 1a1fbacabc34af081d8f9bdc98d55fa563df21b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4360 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 G#(x1#75D1^ diff --git a/DeeployTest/Tests/testFloatPow/network.onnx b/DeeployTest/Tests/testFloatPow/network.onnx deleted file mode 100644 index 50701ff54058479a21a303d3fe2bef9021b47b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmd<>jZO zDlr3DLYyFN=|zbJ8CpUDj7lsF3=9rVa9vT-P=kboxCA&Dg?PA_I2eIg0EiuuWVoP) LVv}`Z65s^@FPI`; From 2e857bd16cba10da0aea7c58c61fcec3b69debeb Mon Sep 17 00:00:00 2001 From: lee2716 Date: Fri, 5 Dec 2025 16:11:51 +0100 Subject: [PATCH 10/10] add change log --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a35473c98e..821dbaec51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ This file contains the changelog for the Deeploy project. The changelog is divid ## Unreleased (Planned Release Target: v0.2.1) ### List of Pull Requests +- Support for RMSNorm (Pow and Sqrt operators) [#136](https://github.com/pulp-platform/Deeploy/pull/136) - Demo TinyViT compatibility with tiled Siracusa [#124](https://github.com/pulp-platform/Deeploy/pull/124) - TinyViT on non-tiled Siracusa [#117](https://github.com/pulp-platform/Deeploy/pull/117) - Support Fully Asynchronous DMAs [#114](https://github.com/pulp-platform/Deeploy/pull/114) @@ -26,6 +27,8 @@ This file contains the changelog for the Deeploy project. The changelog is divid - Fix bias hoisting in generic GEMM with no bias [#126](https://github.com/pulp-platform/Deeploy/pull/126) ### Added +- Support for RMSNorm operation via operator decomposition. +- Added `Pow` (Power) and `Sqrt` (Square Root) operation support (Parsers, Layers, Bindings, Templates, and FP32 Kernels) for the Generic platform. - Support for input tiling for PULP FP regular and DW conv 2D. - CI tests for tiled Siracusa FP regular and DW conv 2D, with and without bias, for skip connections, and for the demo version of TinyViT. - Documentation for PULP FP regular and DW conv 2D and MatMul tile constraints.