diff --git a/lite/load_and_run/src/options/extern_c_opr_options.cpp b/lite/load_and_run/src/options/extern_c_opr_options.cpp index 26976539..108a3c11 100644 --- a/lite/load_and_run/src/options/extern_c_opr_options.cpp +++ b/lite/load_and_run/src/options/extern_c_opr_options.cpp @@ -121,9 +121,13 @@ void COprLibOption::load_lib() { handle, "failed to open c opr lib %s:\n errmsg: %s", lib_path.c_str(), dlerror()); - const char* entry = MGB_C_OPR_INIT_FUNC_STR; + const char* entry = m_c_opr_init_func.c_str(); auto func = dlsym(handle, entry); - mgb_assert(func, "can not resolve %s: %s", entry, dlerror()); + mgb_assert( + func, + "can not resolve %s: %s, please use '--c-opr-init-interface' to set the " + "init API of your loader", + entry, dlerror()); typedef void (*entry_f_t)(void*); reinterpret_cast(func)( reinterpret_cast(&mgb_get_extern_c_opr_api_versioned)); @@ -177,6 +181,7 @@ COprLibOption::COprLibOption() { lib_path = FLAGS_c_opr_lib; c_opr_args.is_run_c_opr = !lib_path.empty(); c_opr_args.is_run_c_opr_with_param = FLAGS_c_opr_lib_with_param; + m_c_opr_init_func = FLAGS_c_opr_init_interface; } bool COprLibOption::is_valid() { @@ -205,5 +210,7 @@ DEFINE_bool( "Run c opr lib with param, use to benchmark speed and check result, " "need c opr loader implemente `copr_param_device_ptr_malloc, " "copr_param_device_ptr_free and copr_param_device_ptr_h2d' symbols"); - +DEFINE_string( + c_opr_init_interface, MGB_C_OPR_INIT_FUNC_STR, + "set the C_OPR_INIT_FUNC interface when running"); REGIST_OPTION_CREATOR(c_opr_lib, lar::COprLibOption::create_option); diff --git a/lite/load_and_run/src/options/extern_c_opr_options.h b/lite/load_and_run/src/options/extern_c_opr_options.h index 4f26219d..24d82ae4 100644 --- a/lite/load_and_run/src/options/extern_c_opr_options.h +++ b/lite/load_and_run/src/options/extern_c_opr_options.h @@ -6,7 +6,7 @@ DECLARE_bool(c_opr_lib_with_param); DECLARE_string(c_opr_lib); - +DECLARE_string(c_opr_init_interface); namespace lar { struct COprArgs { @@ -51,5 +51,6 @@ private: COprArgs c_opr_args; std::string lib_path; std::shared_ptr c_opr_param; + std::string m_c_opr_init_func; }; } // namespace lar \ No newline at end of file