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

Method parse_model_info

lite/src/parse_model/model_parser.cpp:43–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41}
42
43bool ModelParser::parse_model_info(
44 Config& network_config, NetworkIO& network_io,
45 std::unordered_map<std::string, LiteAny>& isolated_config_map,
46 std::string& extra_info, bool configure_valid) const {
47 //! no model info, no parse, direct return
48 if (m_is_bare_model || !m_info) {
49 return false;
50 }
51 //! parse ModelInfo::data
52 if (m_info->data()) {
53 size_t info_length = m_info->data()->size();
54 const uint8_t* info_data = m_info->data()->Data();
55 //! decryption the info
56 auto info_ptr = decrypt_memory(
57 info_data, info_length, m_info_decryption_name, info_length);
58 //! parse the info
59 LITE_LOCK_GUARD(parse_info_static_data().map_mutex);
60 auto it_parse = parse_info_static_data().parse_info_methods.find(
61 m_info_parse_func_name);
62 if (it_parse == parse_info_static_data().parse_info_methods.end()) {
63 LITE_THROW(ssprintf(
64 "can't find model info parse function %s.",
65 m_info_parse_func_name.c_str()));
66 }
67 auto model_info_parse_func =
68 parse_info_static_data().parse_info_methods[m_info_parse_func_name];
69 //! convert for NetworkIOInner to NetworkIO
70 if (model_info_parse_func) {
71 model_info_parse_func(
72 info_ptr.get(), info_length, m_model_name, network_config,
73 network_io, isolated_config_map, extra_info);
74 } else {
75 LITE_THROW(ssprintf(
76 "model info parse function of %s is empty",
77 m_info_parse_func_name.c_str()));
78 }
79 }
80 //! parse ModelInfo::algo_policy
81 if (m_info->algo_policy() && configure_valid) {
82 size_t cache_length = m_info->algo_policy()->size();
83 const uint8_t* cache = m_info->algo_policy()->Data();
84 if (m_info_cache_parse_func_name == "LITE_parse_cache") {
85 if (m_is_fast_run_cache) {
86 parse_info_cache(cache, cache_length);
87 } else if (m_info->binary_cache()) {
88 size_t binary_cache_length = m_info->binary_cache()->size();
89 const uint8_t* binary_cache = m_info->binary_cache()->Data();
90 parse_info_cache(
91 cache, cache_length, m_is_fast_run_cache, binary_cache,
92 binary_cache_length);
93 } else {
94 LITE_THROW("opencl binary cache is not given");
95 }
96 } else {
97 LITE_THROW(ssprintf(
98 "model cache parse function of %s is not defined.",
99 m_info_cache_parse_func_name.c_str()));
100 }

Callers 1

prase_modelMethod · 0.80

Calls 6

parse_info_cacheFunction · 0.85
dataMethod · 0.45
sizeMethod · 0.45
findMethod · 0.45
endMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected