| 25 | } |
| 26 | |
| 27 | PYBIND11_MODULE(MODULE_NAME, m) { |
| 28 | // initialize numpy |
| 29 | if ([]() { |
| 30 | import_array1(1); |
| 31 | return 0; |
| 32 | }()) { |
| 33 | throw py::error_already_set(); |
| 34 | } |
| 35 | |
| 36 | megdnn::inplace_cpu_handle(); |
| 37 | |
| 38 | py::module::import("sys").attr("modules")[m.attr("__name__")] = m; |
| 39 | |
| 40 | m.attr("__package__") = m.attr("__name__"); |
| 41 | m.attr("__builtins__") = py::module::import("builtins"); |
| 42 | |
| 43 | auto atexit = py::module::import("atexit"); |
| 44 | atexit.attr("register")(py::cpp_function([]() { |
| 45 | py::gil_scoped_release _; |
| 46 | py_task_q.wait_all_task_finish(); |
| 47 | })); |
| 48 | |
| 49 | auto common = submodule(m, "common"); |
| 50 | auto utils = submodule(m, "utils"); |
| 51 | auto imperative = submodule(m, "imperative"); |
| 52 | auto graph = submodule(m, "graph"); |
| 53 | auto ops = submodule(m, "ops"); |
| 54 | |
| 55 | init_common(common); |
| 56 | init_utils(utils); |
| 57 | init_imperative_rt(imperative); |
| 58 | init_graph_rt(graph); |
| 59 | init_ops(ops); |
| 60 | |
| 61 | py::exec( |
| 62 | R"( |
| 63 | from .common import * |
| 64 | from .utils import * |
| 65 | from .imperative import * |
| 66 | from .graph import * |
| 67 | from .ops import OpDef |
| 68 | )", |
| 69 | py::getattr(m, "__dict__")); |
| 70 | |
| 71 | init_tensor(submodule(m, "core2")); |
| 72 | } |
nothing calls this directly
no test coverage detected