diff options
author | 오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com> | 2019-04-23 16:59:17 +0900 |
---|---|---|
committer | GitHub Enterprise <noreply-CODE@samsung.com> | 2019-04-23 16:59:17 +0900 |
commit | 4a04be82255eb76927674aaae8e8713e215b61c0 (patch) | |
tree | b9317ee5168d62ff17fccee1f08e2f6188a53cfc | |
parent | 9df0eff70e680596f329dcf7ca097a914fe738ee (diff) | |
download | nnfw-4a04be82255eb76927674aaae8e8713e215b61c0.tar.gz nnfw-4a04be82255eb76927674aaae8e8713e215b61c0.tar.bz2 nnfw-4a04be82255eb76927674aaae8e8713e215b61c0.zip |
Introduce operand usage vectorin frontend (#5039)
Collect operand usage info in frontend
Clear when model building is finished
Prepare removing nnapi-dependent usage info in neurun model operand
Signed-off-by: Hyeongseok Oh <hseok82.oh@samsung.com>
-rw-r--r-- | runtimes/neurun/frontend/nnapi/wrapper/model.cc | 17 | ||||
-rw-r--r-- | runtimes/neurun/frontend/nnapi/wrapper/model.h | 10 |
2 files changed, 26 insertions, 1 deletions
diff --git a/runtimes/neurun/frontend/nnapi/wrapper/model.cc b/runtimes/neurun/frontend/nnapi/wrapper/model.cc index f3948ace0..a15ac3e6e 100644 --- a/runtimes/neurun/frontend/nnapi/wrapper/model.cc +++ b/runtimes/neurun/frontend/nnapi/wrapper/model.cc @@ -27,7 +27,7 @@ // ANeuralNetworksModel // ANeuralNetworksModel::ANeuralNetworksModel() noexcept - : _model{new neurun::model::Model}, _graph{nullptr}, _optional_operands{} + : _model{new neurun::model::Model}, _graph{nullptr}, _optional_operands{}, _operand_usages{} { // DO NOTHING } @@ -39,6 +39,7 @@ bool ANeuralNetworksModel::addOperand(const ANeuralNetworksOperandType *type) no const auto shape = NNAPIConvert::getShape(type); const auto typeInfo = NNAPIConvert::getTypeInfo(type); _model->operands.append(shape, typeInfo); + _operand_usages.emplace_back(OperandUsage::NOT_DEFINED); } catch (const std::exception &e) { @@ -57,6 +58,9 @@ bool ANeuralNetworksModel::setOperandValue(uint32_t index, const void *buffer, s try { + // TODO remove usage setting in operand + _operand_usages[index] = OperandUsage::CONSTANT; + _model->operands.at(ind).usage(neurun::model::operand::Usage::CONSTANT); // Remain operands.at(ind).data()->base() as nullptr for optional operand @@ -97,6 +101,9 @@ bool ANeuralNetworksModel::addOperation(ANeuralNetworksOperationType type, uint3 { for (uint32_t i = 0; i < outputCount; i++) { + // TODO remove usage setting in operand + _operand_usages[outputs[i]] = OperandUsage::OPERATION_OUTPUT; + const neurun::model::operand::Index ind{outputs[i]}; _model->operands.at(ind).usage(neurun::model::operand::Usage::OPERATION_OUTPUT); } @@ -125,6 +132,9 @@ bool ANeuralNetworksModel::addOperationEx(ANeuralNetworksOperationTypeEx type, u { for (uint32_t i = 0; i < outputCount; i++) { + // TODO remove usage setting in operand + _operand_usages[outputs[i]] = OperandUsage::OPERATION_OUTPUT; + const neurun::model::operand::Index ind{outputs[i]}; _model->operands.at(ind).usage(neurun::model::operand::Usage::OPERATION_OUTPUT); } @@ -146,6 +156,9 @@ bool ANeuralNetworksModel::addModelInput(uint32_t index) noexcept { try { + // TODO remove usage setting in operand + _operand_usages[index] = OperandUsage::MODEL_INPUT; + const neurun::model::operand::Index ind{index}; _model->operands.at(ind).usage(neurun::model::operand::Usage::MODEL_INPUT); _model->inputs.append(ind); @@ -192,6 +205,8 @@ bool ANeuralNetworksModel::finish() noexcept _graph = std::make_shared<neurun::graph::Graph>(std::move(_model)); _graph->finishBuilding(); + + _operand_usages.clear(); } catch (const std::exception &e) { diff --git a/runtimes/neurun/frontend/nnapi/wrapper/model.h b/runtimes/neurun/frontend/nnapi/wrapper/model.h index 0a25512be..aee7efba3 100644 --- a/runtimes/neurun/frontend/nnapi/wrapper/model.h +++ b/runtimes/neurun/frontend/nnapi/wrapper/model.h @@ -26,6 +26,15 @@ struct ANeuralNetworksModel { public: + enum class OperandUsage + { + NOT_DEFINED = 0, + MODEL_INPUT, + CONSTANT, + OPERATION_OUTPUT, + }; + +public: ANeuralNetworksModel() noexcept; public: @@ -57,6 +66,7 @@ private: std::unique_ptr<neurun::model::Model> _model; std::shared_ptr<neurun::graph::Graph> _graph; std::unordered_set<neurun::model::operand::Index> _optional_operands; + std::vector<OperandUsage> _operand_usages; }; #endif // __MODEL_H__ |