MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / build_single_opr

Method build_single_opr

src/serialization/impl/serializer_oss_v2.cpp:161–271  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159}
160
161flatbuffers::Offset<fbs::v2::Operator> GraphDumperOSSV2::build_single_opr(
162 cg::OperatorNodeBase* opr, const OprRegistryV2* registry) {
163 m_cur_opr = opr;
164 ++m_cur_rst.nr_opr;
165
166 using namespace flatbuffers;
167 Offset<Vector<uint32_t>> inputs;
168 if (m_cur_opr->input().size()) {
169 std::vector<uint32_t> v;
170 v.reserve(m_cur_opr->input().size());
171 for (auto inp : m_cur_opr->input()) {
172 if (m_var2midtensor_id.find(inp) != m_var2midtensor_id.end()) {
173 v.emplace_back(m_var2midtensor_id.at(inp));
174 } else {
175 mgb_assert(
176 m_var_remove_in_dump.find(inp) != m_var_remove_in_dump.end(),
177 "when dump the model, the dependence of var is wrong.");
178 v.emplace_back(m_var2midtensor_id.at(m_var_remove_in_dump[inp]));
179 }
180 }
181 inputs = m_builder.CreateVector(v);
182 }
183
184 m_cur_opr_tensor.clear();
185 m_blobs.clear();
186 m_cur_opr_param.clear();
187 m_cur_opr_param_type.clear();
188 registry->dumper(*this, *m_cur_opr);
189
190 Offset<Vector<Offset<fbs::v2::CompNode>>> comp_node;
191 auto& config = m_cur_opr->config();
192 if (config.has_comp_node_set()) {
193 std::vector<flatbuffers::Offset<fbs::v2::CompNode>> cns;
194 for (const auto& cn : config.comp_node()) {
195 cns.emplace_back(fbs::v2::CreateCompNode(
196 m_builder, m_builder.CreateSharedString(cn.to_string_logical())));
197 }
198 comp_node = m_builder.CreateVector(cns);
199 }
200 Offset<String> operator_name;
201 if (m_config.keep_op_name) {
202 operator_name = m_builder.CreateSharedString(m_cur_opr->name());
203 }
204
205 auto output_dtype = build_dtype(config.output_dtype());
206
207 Offset<Vector<uint32_t>> outputs;
208 if (m_cur_opr->output().size()) {
209 std::vector<uint32_t> v;
210 v.reserve(m_cur_opr->output().size());
211 for (auto out : m_cur_opr->output()) {
212 if (!out->contain_flag(VarNode::Flag::VOLATILE_CONTENT)) {
213 if (m_config.keep_var_name >= 1) {
214 auto fbs_out = build_middle_tensor(out);
215 m_model_middle_tensors.push_back(fbs_out);
216 } else {
217 m_model_middle_tensors.push_back(0);
218 }

Callers

nothing calls this directly

Calls 15

build_dtypeFunction · 0.85
emplace_backMethod · 0.80
has_comp_node_setMethod · 0.80
to_string_logicalMethod · 0.80
output_dtypeMethod · 0.80
add_inputsMethod · 0.80
add_comp_nodeMethod · 0.80
sizeMethod · 0.45
inputMethod · 0.45
reserveMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected