diff options
author | Chunseok Lee <chunseok.lee@samsung.com> | 2022-09-07 19:04:21 +0900 |
---|---|---|
committer | Chunseok Lee <chunseok.lee@samsung.com> | 2022-09-07 19:04:21 +0900 |
commit | c690d52bdd137ed6a17353aa7af35e8141ece77b (patch) | |
tree | dbb7dd99133132dfbffcb8c9e9af4f1ffc2f4808 /compiler/circle-operator/src/Dump.cpp | |
parent | 3ad689f0803519e343c36d5700646e86059df961 (diff) | |
download | nnfw-c690d52bdd137ed6a17353aa7af35e8141ece77b.tar.gz nnfw-c690d52bdd137ed6a17353aa7af35e8141ece77b.tar.bz2 nnfw-c690d52bdd137ed6a17353aa7af35e8141ece77b.zip |
Imported Upstream version 1.21.0upstream/1.21.0tizen_7.0_m2_releaseaccepted/tizen/unified/20220912.170817accepted/tizen/unified/20220912.164738accepted/tizen/7.0/unified/hotfix/20221116.105341accepted/tizen/7.0/unified/20221110.060236tizen_7.0_hotfixtizen_7.0accepted/tizen_7.0_unified_hotfixaccepted/tizen_7.0_unified
Diffstat (limited to 'compiler/circle-operator/src/Dump.cpp')
-rw-r--r-- | compiler/circle-operator/src/Dump.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/compiler/circle-operator/src/Dump.cpp b/compiler/circle-operator/src/Dump.cpp new file mode 100644 index 000000000..36bfe8632 --- /dev/null +++ b/compiler/circle-operator/src/Dump.cpp @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "Dump.h" + +#include <mio_circle/Helper.h> +#include <mio_circle/Reader.h> + +#include <ostream> + +namespace +{ + +void dump_ops(std::ostream &os, mio::circle::Reader &reader, const cirops::DumpOption &option) +{ + auto ops = reader.operators(); + for (uint32_t i = 0; i < ops->Length(); ++i) + { + const auto op = ops->Get(i); + const auto op_name = reader.opcode_name(op); + + if (option.all_graphs) + { + // NOTE all_graphs is false for now + // TODO check using '$' as split key + os << i << "$"; + } + + if (option.codes) + { + const auto op_name = reader.opcode_name(op); + os << op_name; + } + if (option.names) + { + // TODO multiple outputs? + const auto tensors = reader.tensors(); + const auto output_tensors = reader.outputs(op); + const auto output = output_tensors.at(0); + const auto tensor = tensors->Get(output); + const std::string name = mio::circle::tensor_name(tensor); + if (option.codes) + { + os << ","; + } + os << name; + } + os << std::endl; + } +} + +} // namespace + +namespace cirops +{ + +void DumpOperators::run(std::ostream &os, const circle::Model *model, const DumpOption &option) +{ + mio::circle::Reader reader(model); + + const uint32_t subgraph_size = reader.num_subgraph(); + for (uint32_t g = 0; g < subgraph_size; g++) + { + reader.select_subgraph(g); + dump_ops(os, reader, option); + + if (!option.all_graphs) + break; + } +} + +} // namespace cirops |