Browse Source

feat(lite): add c_opr_init_interface for lar

GitOrigin-RevId: f7bcc27656
HuaHua404-patch-4
Megvii Engine Team 3 years ago
parent
commit
9330929f26
2 changed files with 12 additions and 4 deletions
  1. +10
    -3
      lite/load_and_run/src/options/extern_c_opr_options.cpp
  2. +2
    -1
      lite/load_and_run/src/options/extern_c_opr_options.h

+ 10
- 3
lite/load_and_run/src/options/extern_c_opr_options.cpp View File

@@ -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<entry_f_t>(func)(
reinterpret_cast<void*>(&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);

+ 2
- 1
lite/load_and_run/src/options/extern_c_opr_options.h View File

@@ -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<ExternCOprParam> c_opr_param;
std::string m_c_opr_init_func;
};
} // namespace lar

Loading…
Cancel
Save