From 13c78a67a6a3d743352f0b6e349c52bf36e84468 Mon Sep 17 00:00:00 2001 From: Jerry Ge Date: Tue, 4 Oct 2022 20:32:39 -0700 Subject: [region] Add TosaSerializationRegion to serialization_lib - Rationale: add this fix to support constants access between multiple blocks by another layer of abstraction called Region - Changes: - flatbuffers schema update, regenerate header files - add TosaSerializationRegion for the handler - other relevant fixes Signed-off-by: Jerry Ge Change-Id: I4bb72503abfd629ae017d2f905184efbab244aa8 --- include/tosa_serialization_handler.h | 93 +++++++++++++++++++++++++----------- 1 file changed, 65 insertions(+), 28 deletions(-) (limited to 'include/tosa_serialization_handler.h') diff --git a/include/tosa_serialization_handler.h b/include/tosa_serialization_handler.h index 4cda830..0aa16df 100644 --- a/include/tosa_serialization_handler.h +++ b/include/tosa_serialization_handler.h @@ -216,11 +216,13 @@ class TosaSerializationBasicBlock public: // constructor and destructor TosaSerializationBasicBlock(const std::string& name, + const std::string& region_name, const std::vector& operators, const std::vector& tensors, const std::vector& inputs, const std::vector& outputs); TosaSerializationBasicBlock(std::string&& name, + std::string&& region_name, std::vector&& operators, std::vector&& tensors, std::vector&& inputs, @@ -232,10 +234,15 @@ public: { return _name; } + std::string GetRegionName() const + { + return _region_name; + } std::vector& GetOperators() { return _operators; } + std::vector& GetTensors() { return _tensors; @@ -259,19 +266,59 @@ public: { return _inputs; } + std::vector& GetOutputs() { return _outputs; } private: - std::string _name; /* name of basic block */ + std::string _name; /* name of basic block */ + std::string _region_name; std::vector _operators; /* TosaSerializationOperator list */ std::vector _tensors; /* TosaSerializationTensor list */ std::vector _inputs; /* array of string to specify block inputs */ std::vector _outputs; /* array of string to specify block outputs */ }; +class TosaSerializationRegion +{ +public: + // constructor and desctructor + TosaSerializationRegion(const std::string& name, const std::vector& blocks); + TosaSerializationRegion(const std::string&& name, const std::vector&& blocks); + ~TosaSerializationRegion(); + + // accessors + std::string GetName() const + { + return this->_name; + } + + std::vector& GetBlocks() + { + return this->_blocks; + } + + TosaSerializationBasicBlock* GetBlockByName(std::string name) + { + TosaSerializationBasicBlock* result = nullptr; + for (auto block : GetBlocks()) + { + if (block->GetName() == name) + { + result = block; + break; + } + } + return result; + } + +private: + std::string _name; /* name of basic block */ + std::vector _blocks; /* TosaSerializationBasicBlock list */ +}; + /* * this is a helper class for writing/reading Tosa ISA * supported format: .tosa (flatbuffer), .json @@ -319,39 +366,29 @@ public: } // accessor - std::vector& GetBlocks() + std::vector& GetRegions() { - return _blocks; + return _regions; } - TosaSerializationBasicBlock* GetBlockByName(std::string name) + TosaSerializationRegion* GetMainRegion() { - TosaSerializationBasicBlock* result = nullptr; - for (auto block : GetBlocks()) + return _regions[0]; + } + + TosaSerializationRegion* GetRegionByName(std::string name) + { + TosaSerializationRegion* result = nullptr; + for (auto region : GetRegions()) { - if (block->GetName() == name) + if (region->GetName() == name) { - result = block; + result = region; break; } } return result; } - TosaSerializationBasicBlock* GetMainBlock() - { - TosaSerializationBasicBlock* main_block = GetBlockByName(std::string("main")); - assert(main_block); - return main_block; - } - - std::vector& GetInputs() - { - return GetMainBlock()->GetInputs(); - } - std::vector& GetOutputs() - { - return GetMainBlock()->GetOutputs(); - } bool GetSchemaLoaded() const { @@ -365,11 +402,11 @@ protected: TosaVersion ParseTosaSchemaVersion(std::string schema); private: - TosaVersion _version; /* version struct */ - flatbuffers::FlatBufferBuilder _builder; /* flatbuffer builder */ - flatbuffers::Parser _parser; /* flatbuffer parser, used for json parsing */ - std::vector _blocks; /* array structure to store all TosaSerializationBasicBlock */ - bool _schemaLoaded; /* is the schema properly loaded? */ + TosaVersion _version; /* version struct */ + flatbuffers::FlatBufferBuilder _builder; /* flatbuffer builder */ + flatbuffers::Parser _parser; /* flatbuffer parser, used for json parsing */ + std::vector _regions; /* array structure to store all TosaSerializationRegion */ + bool _schemaLoaded; /* is the schema properly loaded? */ }; } // namespace tosa -- cgit v1.2.1