diff options
author | Tai Ly <tai.ly@arm.com> | 2024-03-21 17:01:14 +0000 |
---|---|---|
committer | Tai Ly <tai.ly@arm.com> | 2024-04-08 22:18:34 +0000 |
commit | ce911a2f1d9cd678fb9fe82a40c86ad0c6772f5a (patch) | |
tree | 68faf6d7b1c676705a022b32d8aa7950db03ab5e /include/tosa_generated.h | |
parent | 8f9e2842ce7d25645233ad4f6fa406be982346ae (diff) | |
download | serialization_lib-ce911a2f1d9cd678fb9fe82a40c86ad0c6772f5a.tar.gz |
Add conversions of U8 to/from BF16 and FP8
Adds type to PadAttribute and ClampAttribute so their pad_const
and max_val/min_val can be deserialized according to type
Adds conversion functions of U8 arrays to/from BF16/FP8 values
Also, refactor and expose TosaSerializer.convertDataToUint8Vec
for converting dtype/data to uint8 list for serialization
And modify convertDataToUint8Vec to serialize bf16 values into
2 bytes each, and serialize fp8 values into single bytes each.
Signed-off-by: Tai Ly <tai.ly@arm.com>
Change-Id: I05659e8187c76d359f1cc9f71c8c23cafd0e877f
Diffstat (limited to 'include/tosa_generated.h')
-rw-r--r-- | include/tosa_generated.h | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/include/tosa_generated.h b/include/tosa_generated.h index 20f6993..0798256 100644 --- a/include/tosa_generated.h +++ b/include/tosa_generated.h @@ -1008,15 +1008,20 @@ inline ::flatbuffers::Offset<TransposeConvAttribute> CreateTransposeConvAttribut struct PadAttribute FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { typedef PadAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_PAD_CONST = 4 + VT_PAD_CONST = 4, + VT_TYPE = 6 }; const ::flatbuffers::Vector<uint8_t> *pad_const() const { return GetPointer<const ::flatbuffers::Vector<uint8_t> *>(VT_PAD_CONST); } + tosa::DType type() const { + return static_cast<tosa::DType>(GetField<uint32_t>(VT_TYPE, 0)); + } bool Verify(::flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_PAD_CONST) && verifier.VerifyVector(pad_const()) && + VerifyField<uint32_t>(verifier, VT_TYPE, 4) && verifier.EndTable(); } }; @@ -1028,6 +1033,9 @@ struct PadAttributeBuilder { void add_pad_const(::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> pad_const) { fbb_.AddOffset(PadAttribute::VT_PAD_CONST, pad_const); } + void add_type(tosa::DType type) { + fbb_.AddElement<uint32_t>(PadAttribute::VT_TYPE, static_cast<uint32_t>(type), 0); + } explicit PadAttributeBuilder(::flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -1041,20 +1049,24 @@ struct PadAttributeBuilder { inline ::flatbuffers::Offset<PadAttribute> CreatePadAttribute( ::flatbuffers::FlatBufferBuilder &_fbb, - ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> pad_const = 0) { + ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> pad_const = 0, + tosa::DType type = tosa::DType_UNKNOWN) { PadAttributeBuilder builder_(_fbb); + builder_.add_type(type); builder_.add_pad_const(pad_const); return builder_.Finish(); } inline ::flatbuffers::Offset<PadAttribute> CreatePadAttributeDirect( ::flatbuffers::FlatBufferBuilder &_fbb, - const std::vector<uint8_t> *pad_const = nullptr) { + const std::vector<uint8_t> *pad_const = nullptr, + tosa::DType type = tosa::DType_UNKNOWN) { if (pad_const) { _fbb.ForceVectorAlignment(pad_const->size(), sizeof(uint8_t), 8); } auto pad_const__ = pad_const ? _fbb.CreateVector<uint8_t>(*pad_const) : 0; return tosa::CreatePadAttribute( _fbb, - pad_const__); + pad_const__, + type); } struct AxisAttribute FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { @@ -1193,7 +1205,8 @@ struct ClampAttribute FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { typedef ClampAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_MIN_VAL = 4, - VT_MAX_VAL = 6 + VT_MAX_VAL = 6, + VT_TYPE = 8 }; const ::flatbuffers::Vector<uint8_t> *min_val() const { return GetPointer<const ::flatbuffers::Vector<uint8_t> *>(VT_MIN_VAL); @@ -1201,12 +1214,16 @@ struct ClampAttribute FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::Vector<uint8_t> *max_val() const { return GetPointer<const ::flatbuffers::Vector<uint8_t> *>(VT_MAX_VAL); } + tosa::DType type() const { + return static_cast<tosa::DType>(GetField<uint32_t>(VT_TYPE, 0)); + } bool Verify(::flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_MIN_VAL) && verifier.VerifyVector(min_val()) && VerifyOffset(verifier, VT_MAX_VAL) && verifier.VerifyVector(max_val()) && + VerifyField<uint32_t>(verifier, VT_TYPE, 4) && verifier.EndTable(); } }; @@ -1221,6 +1238,9 @@ struct ClampAttributeBuilder { void add_max_val(::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> max_val) { fbb_.AddOffset(ClampAttribute::VT_MAX_VAL, max_val); } + void add_type(tosa::DType type) { + fbb_.AddElement<uint32_t>(ClampAttribute::VT_TYPE, static_cast<uint32_t>(type), 0); + } explicit ClampAttributeBuilder(::flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -1235,8 +1255,10 @@ struct ClampAttributeBuilder { inline ::flatbuffers::Offset<ClampAttribute> CreateClampAttribute( ::flatbuffers::FlatBufferBuilder &_fbb, ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> min_val = 0, - ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> max_val = 0) { + ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> max_val = 0, + tosa::DType type = tosa::DType_UNKNOWN) { ClampAttributeBuilder builder_(_fbb); + builder_.add_type(type); builder_.add_max_val(max_val); builder_.add_min_val(min_val); return builder_.Finish(); @@ -1245,7 +1267,8 @@ inline ::flatbuffers::Offset<ClampAttribute> CreateClampAttribute( inline ::flatbuffers::Offset<ClampAttribute> CreateClampAttributeDirect( ::flatbuffers::FlatBufferBuilder &_fbb, const std::vector<uint8_t> *min_val = nullptr, - const std::vector<uint8_t> *max_val = nullptr) { + const std::vector<uint8_t> *max_val = nullptr, + tosa::DType type = tosa::DType_UNKNOWN) { if (min_val) { _fbb.ForceVectorAlignment(min_val->size(), sizeof(uint8_t), 8); } auto min_val__ = min_val ? _fbb.CreateVector<uint8_t>(*min_val) : 0; if (max_val) { _fbb.ForceVectorAlignment(max_val->size(), sizeof(uint8_t), 8); } @@ -1253,7 +1276,8 @@ inline ::flatbuffers::Offset<ClampAttribute> CreateClampAttributeDirect( return tosa::CreateClampAttribute( _fbb, min_val__, - max_val__); + max_val__, + type); } struct RescaleAttribute FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { |