aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2022-06-07 05:17:37 +0000
committerEric Kunze <eric.kunze@arm.com>2022-06-15 08:30:47 -0700
commitbdcc3fee1b8bf55aac50e060115b92a1ccf9741c (patch)
tree05951f3fd1b9e42f859e999976715e6e673acb15 /src
parenta336d54aca08b06953a8b6c49d7e5f6c4899952e (diff)
downloadserialization_lib-bdcc3fee1b8bf55aac50e060115b92a1ccf9741c.tar.gz
Remove quantinfo types
Any needed information has been moved into the attributes for each operator. This aligns with the structure of the attributes in the TOSA specification, and generally simplifies the code. Change-Id: I8243e91b09de1a9115f8af09c5e7def7e8f2866b Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Diffstat (limited to 'src')
-rw-r--r--src/tosa_serialization_handler.cpp139
1 files changed, 11 insertions, 128 deletions
diff --git a/src/tosa_serialization_handler.cpp b/src/tosa_serialization_handler.cpp
index 32725a0..99da2e7 100644
--- a/src/tosa_serialization_handler.cpp
+++ b/src/tosa_serialization_handler.cpp
@@ -56,10 +56,7 @@ TosaSerializationTensor::TosaSerializationTensor()
TosaSerializationTensor::~TosaSerializationTensor()
{}
-void TosaSerializationOperator::InitializeAttributeQinfo(Attribute attribute_type,
- const TosaAttributeBase* attribute,
- QuantInfo qinfo_type,
- const TosaQuantInfoBase* qinfo)
+void TosaSerializationOperator::InitializeAttribute(Attribute attribute_type, const TosaAttributeBase* attribute)
{
_attribute_type = attribute_type;
@@ -80,32 +77,12 @@ void TosaSerializationOperator::InitializeAttributeQinfo(Attribute attribute_typ
assert(0);
}
- _qinfo_type = qinfo_type;
- switch (qinfo_type)
- {
- case QuantInfo_NONE:
- _qinfo = new TosaNoneQuantInfo();
- break;
-#define DEF_QUANTIZATION_INFO(NAME, ...) \
- case QuantInfo_##NAME##QuantInfo: \
- _qinfo = new Tosa##NAME##QuantInfo(qinfo); \
- break;
-#include "quant_info.def"
-#undef DEF_QUANTIZATION_INFO
- default:
- printf("TosaSerializationOperator::TosaSerializationOperator(): QuantInfo %s not implemented yet\n",
- EnumNamesQuantInfo()[qinfo_type]);
- assert(0);
- }
-
- assert(_attribute && _qinfo);
+ assert(_attribute);
}
TosaSerializationOperator::TosaSerializationOperator(Op op,
Attribute attribute_type,
const TosaAttributeBase* attribute,
- QuantInfo qinfo_type,
- const TosaQuantInfoBase* qinfo,
const std::vector<std::string>& input_tensor_names,
const std::vector<std::string>& output_tensor_names)
{
@@ -113,14 +90,12 @@ TosaSerializationOperator::TosaSerializationOperator(Op op,
_input_tensor_names = input_tensor_names;
_output_tensor_names = output_tensor_names;
- InitializeAttributeQinfo(attribute_type, attribute, qinfo_type, qinfo);
+ InitializeAttribute(attribute_type, attribute);
}
TosaSerializationOperator::TosaSerializationOperator(Op op,
Attribute attribute_type,
const TosaAttributeBase* attribute,
- QuantInfo qinfo_type,
- const TosaQuantInfoBase* qinfo,
std::vector<std::string>&& input_tensor_names,
std::vector<std::string>&& output_tensor_names)
{
@@ -128,13 +103,12 @@ TosaSerializationOperator::TosaSerializationOperator(Op op,
_input_tensor_names = std::move(input_tensor_names);
_output_tensor_names = std::move(output_tensor_names);
- InitializeAttributeQinfo(attribute_type, attribute, qinfo_type, qinfo);
+ InitializeAttribute(attribute_type, attribute);
}
TosaSerializationOperator::~TosaSerializationOperator()
{
delete _attribute;
- delete _qinfo;
}
TosaSerializationBasicBlock::TosaSerializationBasicBlock(const std::string& name,
@@ -453,7 +427,6 @@ tosa_err_t TosaSerializationHandler::Deserialize(const uint8_t* buf)
std::vector<std::string> block_outputs_container;
TosaAttributeBase* typed_attribute = NULL;
- TosaQuantInfoBase* typed_qinfo = NULL;
TosaSerializationOperator* new_operator = NULL;
TosaSerializationBasicBlock* new_block = NULL;
TosaSerializationTensor* new_tensor = NULL;
@@ -491,11 +464,9 @@ tosa_err_t TosaSerializationHandler::Deserialize(const uint8_t* buf)
{
auto curr_operator = fb_tosa_operators->Get(j);
- auto operator_op = curr_operator->op();
- auto attribute_type = curr_operator->attribute_type();
- auto attribute = curr_operator->attribute();
- auto operator_qinfo_type = curr_operator->quant_info_type();
- auto operator_qinfo = curr_operator->quant_info();
+ auto operator_op = curr_operator->op();
+ auto attribute_type = curr_operator->attribute_type();
+ auto attribute = curr_operator->attribute();
// input tensors
auto operator_inputs = curr_operator->inputs();
@@ -538,27 +509,8 @@ tosa_err_t TosaSerializationHandler::Deserialize(const uint8_t* buf)
return TOSA_INTERNAL_ERROR;
}
- switch (operator_qinfo_type)
- {
- case QuantInfo_NONE:
- typed_qinfo = new TosaNoneQuantInfo();
- break;
-#define DEF_QUANTIZATION_INFO(NAME, ...) \
- case QuantInfo_##NAME##QuantInfo: \
- typed_qinfo = new Tosa##NAME##QuantInfo(operator_qinfo); \
- break;
-
-#include "quant_info.def"
-#undef DEF_QUANTIZATION_INFO
- default:
- printf("TosaSerializationHandler::Deserialize(): QuantInfo %s not implemented yet\n",
- EnumNamesQuantInfo()[operator_qinfo_type]);
- return TOSA_INTERNAL_ERROR;
- }
-
- new_operator =
- new TosaSerializationOperator(operator_op, attribute_type, typed_attribute, operator_qinfo_type,
- typed_qinfo, operator_inputs_container, operator_outputs_container);
+ new_operator = new TosaSerializationOperator(operator_op, attribute_type, typed_attribute,
+ operator_inputs_container, operator_outputs_container);
if (new_operator)
{
block_operators_container.push_back(new_operator);
@@ -570,8 +522,6 @@ tosa_err_t TosaSerializationHandler::Deserialize(const uint8_t* buf)
if (typed_attribute)
delete typed_attribute;
- if (typed_qinfo)
- delete typed_qinfo;
}
auto fb_tosa_tensors = curr_block->tensors();
@@ -751,75 +701,8 @@ tosa_err_t TosaSerializationHandler::Serialize()
return TOSA_INTERNAL_ERROR;
}
- auto qinfo_type = op->GetQInfoType();
- flatbuffers::Offset<void> fb_operator_qinfo;
- switch (qinfo_type)
- {
- case QuantInfo_NONE:
- fb_operator_qinfo = 0;
- break;
-#define DEF_ARGS_S(NAME, T, V) , reinterpret_cast<Tosa##NAME*>(op->GetQInfo())->V()
-#define DEF_ARGS_V(NAME, T, V) , _builder.CreateVector<T>(reinterpret_cast<Tosa##NAME*>(op->GetQInfo())->V())
-
-#define DEF_ARGS_1(NAME, T0, F0, V0) DEF_ARGS_##F0(NAME, T0, V0)
-#define DEF_ARGS_2(NAME, T0, F0, V0, T1, F1, V1) DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1)
-#define DEF_ARGS_3(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2)
-#define DEF_ARGS_4(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3)
-#define DEF_ARGS_5(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4)
-#define DEF_ARGS_6(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5)
-#define DEF_ARGS_7(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6)
-#define DEF_ARGS_8(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6) \
- DEF_ARGS_##F7(NAME, T7, V7)
-#define DEF_ARGS_9(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7, T8, F8, V8) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6) \
- DEF_ARGS_##F7(NAME, T7, V7) DEF_ARGS_##F8(NAME, T8, V8)
-#define DEF_ARGS_10(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7, T8, F8, V8, T9, F9, V9) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6) \
- DEF_ARGS_##F7(NAME, T7, V7) DEF_ARGS_##F8(NAME, T8, V8) DEF_ARGS_##F9(NAME, T9, V9)
-#define DEF_QUANTIZATION_INFO(NAME, NUM_ARGS, ...) \
- case QuantInfo_##NAME##QuantInfo: \
- fb_operator_qinfo = \
- Create##NAME##QuantInfo(_builder DEF_ARGS_##NUM_ARGS(NAME##QuantInfo, __VA_ARGS__)).Union(); \
- break;
-
-#include "quant_info.def"
-#undef DEF_QUANTIZATION_INFO
-#undef DEF_ARGS_1
-#undef DEF_ARGS_2
-#undef DEF_ARGS_3
-#undef DEF_ARGS_4
-#undef DEF_ARGS_5
-#undef DEF_ARGS_6
-#undef DEF_ARGS_7
-#undef DEF_ARGS_8
-#undef DEF_ARGS_9
-#undef DEF_ARGS_10
-#undef DEF_ARGS_S
-#undef DEF_ARGS_V
- default:
- printf("TosaSerializationHandler::Serialize(): Attribute %s not implemented yet\n",
- EnumNamesAttribute()[attribute_type]);
- return TOSA_INTERNAL_ERROR;
- }
-
- auto fboffset_operator =
- CreateTosaOperator(_builder, operator_op, attribute_type, fb_attribute, fb_operator_inputs,
- fb_operator_outputs, qinfo_type, fb_operator_qinfo);
+ auto fboffset_operator = CreateTosaOperator(_builder, operator_op, attribute_type, fb_attribute,
+ fb_operator_inputs, fb_operator_outputs);
fboffset_block_operators.push_back(fboffset_operator);
}