| 166 | } |
| 167 | |
| 168 | flatbuffers::Offset<fbs::Operator> GraphDumperOSS::build_single_opr( |
| 169 | cg::OperatorNodeBase* opr, const OprRegistry* registry) { |
| 170 | m_cur_opr = opr; |
| 171 | ++m_cur_rst.nr_opr; |
| 172 | |
| 173 | using namespace flatbuffers; |
| 174 | Offset<Vector<Offset<fbs::CompNode>>> comp_node; |
| 175 | auto& config = opr->config(); |
| 176 | if (config.has_comp_node_set()) { |
| 177 | std::vector<flatbuffers::Offset<fbs::CompNode>> cns; |
| 178 | for (const auto& cn : config.comp_node()) { |
| 179 | cns.emplace_back(fbs::CreateCompNode( |
| 180 | m_builder, m_builder.CreateSharedString(cn.to_string_logical()))); |
| 181 | } |
| 182 | comp_node = m_builder.CreateVector(cns); |
| 183 | } |
| 184 | |
| 185 | Offset<Vector<uint32_t>> inputs; |
| 186 | if (opr->input().size()) { |
| 187 | std::vector<uint32_t> v; |
| 188 | v.reserve(opr->input().size()); |
| 189 | for (auto inp : opr->input()) { |
| 190 | v.emplace_back(m_var2id.at(inp)); |
| 191 | } |
| 192 | inputs = m_builder.CreateVector(v); |
| 193 | } |
| 194 | |
| 195 | Offset<String> operator_name; |
| 196 | if (m_config.keep_op_name) { |
| 197 | operator_name = m_builder.CreateSharedString(opr->name()); |
| 198 | } |
| 199 | |
| 200 | Offset<Vector<Offset<String>>> output_names; |
| 201 | if (m_config.keep_var_name >= 2 || |
| 202 | (m_config.keep_var_name == 1 && |
| 203 | contains_any_in_set(opr->output(), m_output_vars))) { |
| 204 | std::vector<std::string> onames; |
| 205 | for (auto i : opr->output()) { |
| 206 | if (!i->contain_flag(VarNode::Flag::VOLATILE_CONTENT)) { |
| 207 | onames.emplace_back(i->name()); |
| 208 | } |
| 209 | } |
| 210 | output_names = m_builder.CreateVectorOfStrings(onames); |
| 211 | } |
| 212 | |
| 213 | auto output_dtype = build_dtype(config.output_dtype()); |
| 214 | |
| 215 | m_cur_opr_tensor.clear(); |
| 216 | m_blobs.clear(); |
| 217 | m_cur_opr_param.clear(); |
| 218 | m_cur_opr_param_type.clear(); |
| 219 | registry->dumper(*this, *opr); |
| 220 | |
| 221 | Offset<Vector<Offset<fbs::Tensor>>> tensors; |
| 222 | if (m_cur_opr_tensor.size()) |
| 223 | tensors = m_builder.CreateVector(m_cur_opr_tensor); |
| 224 | |
| 225 | Offset<Vector<Offset<fbs::Blob>>> blobs; |
nothing calls this directly
no test coverage detected