aboutsummaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/serializer/tosa_serializer.py52
-rw-r--r--python/tosa/ClampAttribute.py4
-rw-r--r--python/tosa/ConvAttribute.py6
-rw-r--r--python/tosa/CustomAttribute.py2
-rw-r--r--python/tosa/PadAttribute.py2
-rw-r--r--python/tosa/PoolAttribute.py6
-rw-r--r--python/tosa/ResizeAttribute.py117
-rw-r--r--python/tosa/TableAttribute.py2
-rw-r--r--python/tosa/TosaBasicBlock.py8
-rw-r--r--python/tosa/TosaGraph.py2
-rw-r--r--python/tosa/TosaOperator.py4
-rw-r--r--python/tosa/TosaRegion.py2
-rw-r--r--python/tosa/TosaTensor.py4
-rw-r--r--python/tosa/TransposeAttribute.py2
-rw-r--r--python/tosa/TransposeConvAttribute.py4
15 files changed, 41 insertions, 176 deletions
diff --git a/python/serializer/tosa_serializer.py b/python/serializer/tosa_serializer.py
index be3cdea..c417fce 100644
--- a/python/serializer/tosa_serializer.py
+++ b/python/serializer/tosa_serializer.py
@@ -17,7 +17,7 @@ import serializer.tosa_serializer as ts
import json
import flatbuffers
import numpy as np
-import struct
+from ml_dtypes import bfloat16, float8_e4m3fn, float8_e5m2
from enum import IntEnum, unique
from tosa import (
TosaGraph,
@@ -31,8 +31,8 @@ import tosa.DType as TosaDType
import tosa.Op as TosaOp
# Keep version number in sync with the version default value with schema/tosa.fbs
-TOSA_VERSION_MAJOR = 0
-TOSA_VERSION_MINOR = 100
+TOSA_VERSION_MAJOR = 1
+TOSA_VERSION_MINOR = 1
TOSA_VERSION_PATCH = 0
TOSA_VERSION_DRAFT = True
TOSA_VERSION = [
@@ -225,15 +225,12 @@ class TosaSerializerAttribute(TosaSerializerUnion):
self.ints.append((a.AddAxis, axis))
- def ResizeAttribute(self, scale, offset, border, mode):
+ def ResizeAttribute(self, mode):
from tosa import ResizeAttribute as a, Attribute
self.utype = Attribute.Attribute().ResizeAttribute
self.optFcns = (a.Start, a.End)
- self.int16vecs.append((a.AddScale, scale))
- self.int16vecs.append((a.AddOffset, offset))
- self.int16vecs.append((a.AddBorder, border))
self.ints.append((a.AddMode, mode))
def ClampAttribute(self, serializer_builder, min_val_as_bytes, max_val_as_bytes):
@@ -392,13 +389,14 @@ class TosaSerializerTensor:
self.shape = shape
self.dtype = dtype
- if (
- dtype == DType.FP32
- or dtype == DType.BF16
- or dtype == DType.FP8E4M3
- or dtype == DType.FP8E5M2
- ):
+ if dtype == DType.FP32:
fntype = np.float32
+ elif dtype == DType.BF16:
+ fntype = bfloat16
+ elif dtype == DType.FP8E4M3:
+ fntype = float8_e4m3fn
+ elif dtype == DType.FP8E5M2:
+ fntype = float8_e5m2
elif dtype == DType.FP16:
fntype = np.float16
else:
@@ -943,35 +941,19 @@ class TosaSerializer:
np_arr = np.array(data, dtype=np.float16)
u8_data.extend(np_arr.view(np.uint8))
elif dtype == DType.FP32:
- # for val in data:
- # b = struct.pack("!f", val)
- # u8_data.extend([b[3], b[2], b[1], b[0]])
np_arr = np.array(data, dtype=np.float32)
u8_data.extend(np_arr.view(np.uint8))
elif dtype == DType.BF16:
- for val in data:
- # convert val to little endian byte arrays b
- b = struct.pack("<f", val)
- # val => [ b[3], b[2], b[1], b[0] ]
- # keep only most significant 2 bytes for bf16
- # in little endian ordering
- u8_data.extend([b[2], b[3]])
+ np_arr = np.array(data, dtype=bfloat16)
+ u8_data.extend(np_arr.view(np.uint8))
elif dtype == DType.FP8E4M3:
for val in data:
- # convert val to fp8_bits then to single byte
- f32_as_int = struct.unpack(">L", struct.pack(">f", val))[0]
- f32_bits = f"{f32_as_int:032b}"
- fp8_bits = f32_bits[0] + f32_bits[1:5] + f32_bits[9:12]
- fp8_bytes = int(fp8_bits, 2).to_bytes(1, byteorder="little")
- u8_data.extend(fp8_bytes)
+ val_f8 = np.array(val).astype(float8_e4m3fn).view(np.uint8)
+ u8_data.append(val_f8)
elif dtype == DType.FP8E5M2:
for val in data:
- # convert val to fp8_bits then to single byte
- f32_as_int = struct.unpack(">L", struct.pack(">f", val))[0]
- f32_bits = f"{f32_as_int:032b}"
- fp8_bits = f32_bits[0] + f32_bits[1:6] + f32_bits[9:11]
- fp8_bytes = int(fp8_bits, 2).to_bytes(1, byteorder="little")
- u8_data.extend(fp8_bytes)
+ val_f8 = np.array(val).astype(float8_e5m2).view(np.uint8)
+ u8_data.append(val_f8)
elif dtype == TosaDType.DType:
# Serialize DType enum data as uint8 bytes
for val in data:
diff --git a/python/tosa/ClampAttribute.py b/python/tosa/ClampAttribute.py
index 6a41498..40254ec 100644
--- a/python/tosa/ClampAttribute.py
+++ b/python/tosa/ClampAttribute.py
@@ -97,7 +97,7 @@ def AddMinVal(builder, minVal):
def ClampAttributeStartMinValVector(builder, numElems):
return builder.StartVector(1, numElems, 1)
-def StartMinValVector(builder, numElems: int) -> int:
+def StartMinValVector(builder, numElems):
return ClampAttributeStartMinValVector(builder, numElems)
def ClampAttributeAddMaxVal(builder, maxVal):
@@ -109,7 +109,7 @@ def AddMaxVal(builder, maxVal):
def ClampAttributeStartMaxValVector(builder, numElems):
return builder.StartVector(1, numElems, 1)
-def StartMaxValVector(builder, numElems: int) -> int:
+def StartMaxValVector(builder, numElems):
return ClampAttributeStartMaxValVector(builder, numElems)
def ClampAttributeEnd(builder):
diff --git a/python/tosa/ConvAttribute.py b/python/tosa/ConvAttribute.py
index dfa75dc..1deca59 100644
--- a/python/tosa/ConvAttribute.py
+++ b/python/tosa/ConvAttribute.py
@@ -152,7 +152,7 @@ def AddPad(builder, pad):
def ConvAttributeStartPadVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartPadVector(builder, numElems: int) -> int:
+def StartPadVector(builder, numElems):
return ConvAttributeStartPadVector(builder, numElems)
def ConvAttributeAddStride(builder, stride):
@@ -164,7 +164,7 @@ def AddStride(builder, stride):
def ConvAttributeStartStrideVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartStrideVector(builder, numElems: int) -> int:
+def StartStrideVector(builder, numElems):
return ConvAttributeStartStrideVector(builder, numElems)
def ConvAttributeAddDilation(builder, dilation):
@@ -176,7 +176,7 @@ def AddDilation(builder, dilation):
def ConvAttributeStartDilationVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartDilationVector(builder, numElems: int) -> int:
+def StartDilationVector(builder, numElems):
return ConvAttributeStartDilationVector(builder, numElems)
def ConvAttributeAddInputZp(builder, inputZp):
diff --git a/python/tosa/CustomAttribute.py b/python/tosa/CustomAttribute.py
index db35dca..4c1c477 100644
--- a/python/tosa/CustomAttribute.py
+++ b/python/tosa/CustomAttribute.py
@@ -96,7 +96,7 @@ def AddImplementationAttrs(builder, implementationAttrs):
def CustomAttributeStartImplementationAttrsVector(builder, numElems):
return builder.StartVector(1, numElems, 1)
-def StartImplementationAttrsVector(builder, numElems: int) -> int:
+def StartImplementationAttrsVector(builder, numElems):
return CustomAttributeStartImplementationAttrsVector(builder, numElems)
def CustomAttributeEnd(builder):
diff --git a/python/tosa/PadAttribute.py b/python/tosa/PadAttribute.py
index 301bf17..8adf9f7 100644
--- a/python/tosa/PadAttribute.py
+++ b/python/tosa/PadAttribute.py
@@ -70,7 +70,7 @@ def AddPadConst(builder, padConst):
def PadAttributeStartPadConstVector(builder, numElems):
return builder.StartVector(1, numElems, 1)
-def StartPadConstVector(builder, numElems: int) -> int:
+def StartPadConstVector(builder, numElems):
return PadAttributeStartPadConstVector(builder, numElems)
def PadAttributeEnd(builder):
diff --git a/python/tosa/PoolAttribute.py b/python/tosa/PoolAttribute.py
index c13e038..831d43b 100644
--- a/python/tosa/PoolAttribute.py
+++ b/python/tosa/PoolAttribute.py
@@ -145,7 +145,7 @@ def AddPad(builder, pad):
def PoolAttributeStartPadVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartPadVector(builder, numElems: int) -> int:
+def StartPadVector(builder, numElems):
return PoolAttributeStartPadVector(builder, numElems)
def PoolAttributeAddKernel(builder, kernel):
@@ -157,7 +157,7 @@ def AddKernel(builder, kernel):
def PoolAttributeStartKernelVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartKernelVector(builder, numElems: int) -> int:
+def StartKernelVector(builder, numElems):
return PoolAttributeStartKernelVector(builder, numElems)
def PoolAttributeAddStride(builder, stride):
@@ -169,7 +169,7 @@ def AddStride(builder, stride):
def PoolAttributeStartStrideVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartStrideVector(builder, numElems: int) -> int:
+def StartStrideVector(builder, numElems):
return PoolAttributeStartStrideVector(builder, numElems)
def PoolAttributeAddInputZp(builder, inputZp):
diff --git a/python/tosa/ResizeAttribute.py b/python/tosa/ResizeAttribute.py
index 96bfa56..f2a6992 100644
--- a/python/tosa/ResizeAttribute.py
+++ b/python/tosa/ResizeAttribute.py
@@ -29,87 +29,6 @@ class ResizeAttribute(object):
self._tab = flatbuffers.table.Table(buf, pos)
# ResizeAttribute
- def Scale(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.Get(flatbuffers.number_types.Int16Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 2))
- return 0
-
- # ResizeAttribute
- def ScaleAsNumpy(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int16Flags, o)
- return 0
-
- # ResizeAttribute
- def ScaleLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # ResizeAttribute
- def ScaleIsNone(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- return o == 0
-
- # ResizeAttribute
- def Offset(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.Get(flatbuffers.number_types.Int16Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 2))
- return 0
-
- # ResizeAttribute
- def OffsetAsNumpy(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int16Flags, o)
- return 0
-
- # ResizeAttribute
- def OffsetLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # ResizeAttribute
- def OffsetIsNone(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- return o == 0
-
- # ResizeAttribute
- def Border(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.Get(flatbuffers.number_types.Int16Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 2))
- return 0
-
- # ResizeAttribute
- def BorderAsNumpy(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
- if o != 0:
- return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int16Flags, o)
- return 0
-
- # ResizeAttribute
- def BorderLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # ResizeAttribute
- def BorderIsNone(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
- return o == 0
-
- # ResizeAttribute
def Mode(self):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
if o != 0:
@@ -122,42 +41,6 @@ def ResizeAttributeStart(builder):
def Start(builder):
ResizeAttributeStart(builder)
-def ResizeAttributeAddScale(builder, scale):
- builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(scale), 0)
-
-def AddScale(builder, scale):
- ResizeAttributeAddScale(builder, scale)
-
-def ResizeAttributeStartScaleVector(builder, numElems):
- return builder.StartVector(2, numElems, 2)
-
-def StartScaleVector(builder, numElems: int) -> int:
- return ResizeAttributeStartScaleVector(builder, numElems)
-
-def ResizeAttributeAddOffset(builder, offset):
- builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(offset), 0)
-
-def AddOffset(builder, offset):
- ResizeAttributeAddOffset(builder, offset)
-
-def ResizeAttributeStartOffsetVector(builder, numElems):
- return builder.StartVector(2, numElems, 2)
-
-def StartOffsetVector(builder, numElems: int) -> int:
- return ResizeAttributeStartOffsetVector(builder, numElems)
-
-def ResizeAttributeAddBorder(builder, border):
- builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(border), 0)
-
-def AddBorder(builder, border):
- ResizeAttributeAddBorder(builder, border)
-
-def ResizeAttributeStartBorderVector(builder, numElems):
- return builder.StartVector(2, numElems, 2)
-
-def StartBorderVector(builder, numElems: int) -> int:
- return ResizeAttributeStartBorderVector(builder, numElems)
-
def ResizeAttributeAddMode(builder, mode):
builder.PrependUint32Slot(3, mode, 0)
diff --git a/python/tosa/TableAttribute.py b/python/tosa/TableAttribute.py
index 6caa1f2..04193fa 100644
--- a/python/tosa/TableAttribute.py
+++ b/python/tosa/TableAttribute.py
@@ -70,7 +70,7 @@ def AddTable(builder, table):
def TableAttributeStartTableVector(builder, numElems):
return builder.StartVector(2, numElems, 2)
-def StartTableVector(builder, numElems: int) -> int:
+def StartTableVector(builder, numElems):
return TableAttributeStartTableVector(builder, numElems)
def TableAttributeEnd(builder):
diff --git a/python/tosa/TosaBasicBlock.py b/python/tosa/TosaBasicBlock.py
index b31f455..30ad0ee 100644
--- a/python/tosa/TosaBasicBlock.py
+++ b/python/tosa/TosaBasicBlock.py
@@ -146,7 +146,7 @@ def AddOperators(builder, operators):
def TosaBasicBlockStartOperatorsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartOperatorsVector(builder, numElems: int) -> int:
+def StartOperatorsVector(builder, numElems):
return TosaBasicBlockStartOperatorsVector(builder, numElems)
def TosaBasicBlockAddTensors(builder, tensors):
@@ -158,7 +158,7 @@ def AddTensors(builder, tensors):
def TosaBasicBlockStartTensorsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartTensorsVector(builder, numElems: int) -> int:
+def StartTensorsVector(builder, numElems):
return TosaBasicBlockStartTensorsVector(builder, numElems)
def TosaBasicBlockAddInputs(builder, inputs):
@@ -170,7 +170,7 @@ def AddInputs(builder, inputs):
def TosaBasicBlockStartInputsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartInputsVector(builder, numElems: int) -> int:
+def StartInputsVector(builder, numElems):
return TosaBasicBlockStartInputsVector(builder, numElems)
def TosaBasicBlockAddOutputs(builder, outputs):
@@ -182,7 +182,7 @@ def AddOutputs(builder, outputs):
def TosaBasicBlockStartOutputsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartOutputsVector(builder, numElems: int) -> int:
+def StartOutputsVector(builder, numElems):
return TosaBasicBlockStartOutputsVector(builder, numElems)
def TosaBasicBlockEnd(builder):
diff --git a/python/tosa/TosaGraph.py b/python/tosa/TosaGraph.py
index 84b51a7..520372b 100644
--- a/python/tosa/TosaGraph.py
+++ b/python/tosa/TosaGraph.py
@@ -85,7 +85,7 @@ def AddRegions(builder, regions):
def TosaGraphStartRegionsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartRegionsVector(builder, numElems: int) -> int:
+def StartRegionsVector(builder, numElems):
return TosaGraphStartRegionsVector(builder, numElems)
def TosaGraphEnd(builder):
diff --git a/python/tosa/TosaOperator.py b/python/tosa/TosaOperator.py
index 2b889ad..19f2d2c 100644
--- a/python/tosa/TosaOperator.py
+++ b/python/tosa/TosaOperator.py
@@ -125,7 +125,7 @@ def AddInputs(builder, inputs):
def TosaOperatorStartInputsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartInputsVector(builder, numElems: int) -> int:
+def StartInputsVector(builder, numElems):
return TosaOperatorStartInputsVector(builder, numElems)
def TosaOperatorAddOutputs(builder, outputs):
@@ -137,7 +137,7 @@ def AddOutputs(builder, outputs):
def TosaOperatorStartOutputsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartOutputsVector(builder, numElems: int) -> int:
+def StartOutputsVector(builder, numElems):
return TosaOperatorStartOutputsVector(builder, numElems)
def TosaOperatorEnd(builder):
diff --git a/python/tosa/TosaRegion.py b/python/tosa/TosaRegion.py
index 7fd6e3c..80829da 100644
--- a/python/tosa/TosaRegion.py
+++ b/python/tosa/TosaRegion.py
@@ -81,7 +81,7 @@ def AddBlocks(builder, blocks):
def TosaRegionStartBlocksVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartBlocksVector(builder, numElems: int) -> int:
+def StartBlocksVector(builder, numElems):
return TosaRegionStartBlocksVector(builder, numElems)
def TosaRegionEnd(builder):
diff --git a/python/tosa/TosaTensor.py b/python/tosa/TosaTensor.py
index 3fb9f86..1311aac 100644
--- a/python/tosa/TosaTensor.py
+++ b/python/tosa/TosaTensor.py
@@ -138,7 +138,7 @@ def AddShape(builder, shape):
def TosaTensorStartShapeVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartShapeVector(builder, numElems: int) -> int:
+def StartShapeVector(builder, numElems):
return TosaTensorStartShapeVector(builder, numElems)
def TosaTensorAddType(builder, type):
@@ -156,7 +156,7 @@ def AddData(builder, data):
def TosaTensorStartDataVector(builder, numElems):
return builder.StartVector(1, numElems, 1)
-def StartDataVector(builder, numElems: int) -> int:
+def StartDataVector(builder, numElems):
return TosaTensorStartDataVector(builder, numElems)
def TosaTensorAddVariable(builder, variable):
diff --git a/python/tosa/TransposeAttribute.py b/python/tosa/TransposeAttribute.py
index 71cfdf0..5aa23e2 100644
--- a/python/tosa/TransposeAttribute.py
+++ b/python/tosa/TransposeAttribute.py
@@ -70,7 +70,7 @@ def AddPerms(builder, perms):
def TransposeAttributeStartPermsVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartPermsVector(builder, numElems: int) -> int:
+def StartPermsVector(builder, numElems):
return TransposeAttributeStartPermsVector(builder, numElems)
def TransposeAttributeEnd(builder):
diff --git a/python/tosa/TransposeConvAttribute.py b/python/tosa/TransposeConvAttribute.py
index 9dedfc4..2f7cdc7 100644
--- a/python/tosa/TransposeConvAttribute.py
+++ b/python/tosa/TransposeConvAttribute.py
@@ -125,7 +125,7 @@ def AddOutPad(builder, outPad):
def TransposeConvAttributeStartOutPadVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartOutPadVector(builder, numElems: int) -> int:
+def StartOutPadVector(builder, numElems):
return TransposeConvAttributeStartOutPadVector(builder, numElems)
def TransposeConvAttributeAddStride(builder, stride):
@@ -137,7 +137,7 @@ def AddStride(builder, stride):
def TransposeConvAttributeStartStrideVector(builder, numElems):
return builder.StartVector(4, numElems, 4)
-def StartStrideVector(builder, numElems: int) -> int:
+def StartStrideVector(builder, numElems):
return TransposeConvAttributeStartStrideVector(builder, numElems)
def TransposeConvAttributeAddInputZp(builder, inputZp):