diff options
author | Rob Elliott <robert.elliott@arm.com> | 2023-08-17 14:27:06 +0000 |
---|---|---|
committer | Rickard Bolin <rickard.bolin@arm.com> | 2023-08-21 16:14:51 +0000 |
commit | 00a15db3e1a188b25065d095152d701f4394cdc5 (patch) | |
tree | 96761b9f7ac3ad759f9f0ffbf63a6d0ef115ad14 /ethosu/vela/tosa/TosaOperator.py | |
parent | 8ea90edb75e5d2353aa91c264356fc9d460ca308 (diff) | |
download | ethos-u-vela-00a15db3e1a188b25065d095152d701f4394cdc5.tar.gz |
Moving Vela to use TOSA v0.80.0 specification
* Using serialization_lib main branch to update statically copied
files sha 5f920211ac23393a7b98a0d358bfbfc3232d5c8f (v0.80.0)
* All files within the ethosu/vela/tosa are copied from that revision
* Note: hope to move to serialization_lib as a pip module in future
* Modified the ethosu/vela/{tosa_mapping,tosa_reader}.py to use
v0.80.0 TOSA FlatBuffers implementation
* These are the additional changes made to support this new version,
with changes in the format of the FlatBuffers file and where various
values are stored. Either changing from input to attribute, or
moving to different attributes.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Change-Id: I5e1fcc2a9964148619be3477adf1e88e84cbae2d
Diffstat (limited to 'ethosu/vela/tosa/TosaOperator.py')
-rw-r--r-- | ethosu/vela/tosa/TosaOperator.py | 97 |
1 files changed, 71 insertions, 26 deletions
diff --git a/ethosu/vela/tosa/TosaOperator.py b/ethosu/vela/tosa/TosaOperator.py index c45efda6..2b889adf 100644 --- a/ethosu/vela/tosa/TosaOperator.py +++ b/ethosu/vela/tosa/TosaOperator.py @@ -3,17 +3,27 @@ # namespace: tosa import flatbuffers +from flatbuffers.compat import import_numpy +np = import_numpy() class TosaOperator(object): __slots__ = ['_tab'] @classmethod - def GetRootAsTosaOperator(cls, buf, offset): + def GetRootAs(cls, buf, offset=0): n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) x = TosaOperator() x.Init(buf, n + offset) return x + @classmethod + def GetRootAsTosaOperator(cls, buf, offset=0): + """This method is deprecated. Please switch to GetRootAs.""" + return cls.GetRootAs(buf, offset) + @classmethod + def TosaOperatorBufferHasIdentifier(cls, buf, offset, size_prefixed=False): + return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x4F\x53\x41", size_prefixed=size_prefixed) + # TosaOperator def Init(self, buf, pos): self._tab = flatbuffers.table.Table(buf, pos) @@ -58,6 +68,11 @@ class TosaOperator(object): return 0 # TosaOperator + def InputsIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) + return o == 0 + + # TosaOperator def Outputs(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) if o != 0: @@ -73,30 +88,60 @@ class TosaOperator(object): return 0 # TosaOperator - def QuantInfoType(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14)) - if o != 0: - return self._tab.Get(flatbuffers.number_types.Uint8Flags, o + self._tab.Pos) - return 0 + def OutputsIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) + return o == 0 - # TosaOperator - def QuantInfo(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16)) - if o != 0: - from flatbuffers.table import Table - obj = Table(bytearray(), 0) - self._tab.Union(obj, o) - return obj - return None +def TosaOperatorStart(builder): + builder.StartObject(5) + +def Start(builder): + TosaOperatorStart(builder) + +def TosaOperatorAddOp(builder, op): + builder.PrependUint32Slot(0, op, 0) + +def AddOp(builder, op): + TosaOperatorAddOp(builder, op) + +def TosaOperatorAddAttributeType(builder, attributeType): + builder.PrependUint8Slot(1, attributeType, 0) + +def AddAttributeType(builder, attributeType): + TosaOperatorAddAttributeType(builder, attributeType) + +def TosaOperatorAddAttribute(builder, attribute): + builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(attribute), 0) + +def AddAttribute(builder, attribute): + TosaOperatorAddAttribute(builder, attribute) + +def TosaOperatorAddInputs(builder, inputs): + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(inputs), 0) + +def AddInputs(builder, inputs): + TosaOperatorAddInputs(builder, inputs) + +def TosaOperatorStartInputsVector(builder, numElems): + return builder.StartVector(4, numElems, 4) + +def StartInputsVector(builder, numElems: int) -> int: + return TosaOperatorStartInputsVector(builder, numElems) + +def TosaOperatorAddOutputs(builder, outputs): + builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(outputs), 0) + +def AddOutputs(builder, outputs): + TosaOperatorAddOutputs(builder, outputs) + +def TosaOperatorStartOutputsVector(builder, numElems): + return builder.StartVector(4, numElems, 4) + +def StartOutputsVector(builder, numElems: int) -> int: + return TosaOperatorStartOutputsVector(builder, numElems) + +def TosaOperatorEnd(builder): + return builder.EndObject() -def TosaOperatorStart(builder): builder.StartObject(7) -def TosaOperatorAddOp(builder, op): builder.PrependUint32Slot(0, op, 0) -def TosaOperatorAddAttributeType(builder, attributeType): builder.PrependUint8Slot(1, attributeType, 0) -def TosaOperatorAddAttribute(builder, attribute): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(attribute), 0) -def TosaOperatorAddInputs(builder, inputs): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(inputs), 0) -def TosaOperatorStartInputsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def TosaOperatorAddOutputs(builder, outputs): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(outputs), 0) -def TosaOperatorStartOutputsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def TosaOperatorAddQuantInfoType(builder, quantInfoType): builder.PrependUint8Slot(5, quantInfoType, 0) -def TosaOperatorAddQuantInfo(builder, quantInfo): builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(quantInfo), 0) -def TosaOperatorEnd(builder): return builder.EndObject() +def End(builder): + return TosaOperatorEnd(builder) |