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

Method build_info

lite/src/pack_model/pack_model.cpp:123–191  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

121}
122
123flatbuffers::Offset<ModelInfo> FbsHelper::build_info() {
124 flatbuffers::Offset<flatbuffers::Vector<uint8_t>> fb_data;
125 if (m_model_info && m_model_info->data() && m_packer->m_info_data.empty()) {
126 auto data = m_model_info->data()->Data();
127 auto size = m_model_info->data()->size();
128 fb_data = m_builder.CreateVector(data, size);
129 } else if (!m_packer->m_info_data.empty()) {
130 fb_data = m_builder.CreateVector(m_packer->m_info_data);
131 } else {
132 //! set info->data() to non-null to avoid load_and_run parse model compatibility
133 //! issue
134 std::string default_data;
135#if MGB_ENABLE_JSON
136 std::vector<std::pair<mgb::json::String, std::shared_ptr<mgb::json::Value>>>
137 info;
138 info.push_back({mgb::json::String("valid"), mgb::json::Bool::make(false)});
139 auto obj = mgb::json::Object::make(info);
140 default_data = obj->to_string();
141#endif
142 std::vector<uint8_t> json_info(default_data.begin(), default_data.end());
143 fb_data = m_builder.CreateVector(json_info);
144 }
145
146 flatbuffers::Offset<flatbuffers::Vector<uint8_t>> fb_algo_policy;
147 flatbuffers::Offset<flatbuffers::Vector<uint8_t>> fb_binary_cache;
148 if (m_packer->m_header.fb32.is_fast_run_cache) {
149 std::vector<uint8_t> info_algo_policy;
150 if (!m_packer->m_algo_policy_data.empty()) {
151 info_algo_policy = m_packer->m_algo_policy_data;
152 if (m_model_info && m_model_info->algo_policy()) {
153 auto cache = m_model_info->algo_policy()->Data();
154 auto size = m_model_info->algo_policy()->size();
155
156 uint32_t nr_category_1, nr_category_2, nr_category;
157 memcpy(&nr_category_1, cache, sizeof(uint32_t));
158 memcpy(&nr_category_2, info_algo_policy.data(), sizeof(uint32_t));
159 nr_category = nr_category_1 + nr_category_2;
160
161 std::vector<uint8_t> cache_append;
162 cache_append.resize(sizeof(nr_category));
163 memcpy(cache_append.data(), &nr_category, sizeof(nr_category));
164 cache_append.insert(
165 cache_append.end(), cache + sizeof(nr_category), cache + size);
166 cache_append.insert(
167 cache_append.end(),
168 info_algo_policy.begin() + sizeof(nr_category),
169 info_algo_policy.end());
170
171 fb_algo_policy = m_builder.CreateVector(cache_append);
172 } else {
173 fb_algo_policy = m_builder.CreateVector(info_algo_policy);
174 }
175 }
176#if LITE_BUILD_WITH_MGE
177 else {
178 info_algo_policy = static_cast<mgb::InFilePersistentCache&>(
179 mgb::PersistentCache::inst())
180 .dump_cache();

Callers 1

pack_modelMethod · 0.80

Calls 13

instFunction · 0.85
resizeMethod · 0.80
StringClass · 0.50
makeFunction · 0.50
dataMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45
to_stringMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected