@@ -130,7 +130,7 @@ PyParametersToJSON(const py::dict& parameters)
130130void
131131AsyncEventFutureDoneCallback (const py::object& py_future)
132132{
133- std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance ();
133+ auto stub = Stub::GetOrCreateInstance ();
134134 stub->BackgroundFutureDone (py_future);
135135}
136136
@@ -514,7 +514,7 @@ Stub::AutoCompleteModelConfig(
514514 python_backend_utils.def (
515515 " get_model_dir" ,
516516 []() {
517- std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance ();
517+ auto stub = Stub::GetOrCreateInstance ();
518518 return stub->GetModelDir ();
519519 },
520520 py::return_value_policy::reference);
@@ -568,7 +568,7 @@ Stub::Initialize(bi::managed_external_buffer::handle_t map_handle)
568568 python_backend_utils.def (
569569 " get_model_dir" ,
570570 []() {
571- std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance ();
571+ auto stub = Stub::GetOrCreateInstance ();
572572 return stub->GetModelDir ();
573573 },
574574 py::return_value_policy::reference);
@@ -1073,16 +1073,16 @@ Stub::~Stub()
10731073 memory_manager_message_queue_.reset ();
10741074}
10751075
1076- std::unique_ptr< Stub> Stub::stub_instance_ ;
1076+ static std::shared_ptr<triton::backend::python:: Stub> stub_instance{ nullptr } ;
10771077
1078- std::unique_ptr< Stub>&
1078+ std::shared_ptr<triton::backend::python:: Stub>
10791079Stub::GetOrCreateInstance ()
10801080{
1081- if (Stub::stub_instance_. get () == nullptr ) {
1082- Stub::stub_instance_ = std::make_unique< Stub>( );
1081+ if (!stub_instance ) {
1082+ stub_instance. reset ( new triton::backend::python:: Stub() );
10831083 }
10841084
1085- return Stub::stub_instance_ ;
1085+ return stub_instance ;
10861086}
10871087
10881088void
@@ -1822,7 +1822,7 @@ PYBIND11_EMBEDDED_MODULE(c_python_backend_utils, module)
18221822 " exec" ,
18231823 [](std::shared_ptr<InferRequest>& infer_request,
18241824 const bool decoupled) {
1825- std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance ();
1825+ auto stub = Stub::GetOrCreateInstance ();
18261826 std::shared_ptr<InferResponse> response =
18271827 infer_request->Exec (decoupled);
18281828 py::object response_object;
@@ -1840,7 +1840,7 @@ PYBIND11_EMBEDDED_MODULE(c_python_backend_utils, module)
18401840 " async_exec" ,
18411841 [](std::shared_ptr<InferRequest>& infer_request,
18421842 const bool decoupled) {
1843- std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance ();
1843+ auto stub = Stub::GetOrCreateInstance ();
18441844 py::object loop =
18451845 py::module_::import (" asyncio" ).attr (" get_running_loop" )();
18461846 py::cpp_function callback = [&stub, infer_request, decoupled]() {
@@ -2125,7 +2125,7 @@ main(int argc, char** argv)
21252125 std::string name = argv[8 ];
21262126 std::string runtime_modeldir = argv[9 ];
21272127
2128- std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance ();
2128+ auto stub = Stub::GetOrCreateInstance ();
21292129 try {
21302130 stub->Instantiate (
21312131 shm_growth_size, shm_default_size, shm_region_name, model_path,
@@ -2148,7 +2148,7 @@ main(int argc, char** argv)
21482148#endif
21492149 std::atomic<bool > background_thread_running = {true };
21502150 std::thread background_thread =
2151- std::thread ([&parent_pid , &background_thread_running , &stub , &logger] {
2151+ std::thread ([stub , &parent_pid , &background_thread_running , &logger] {
21522152 // Send a dummy message after the stub process is launched to notify the
21532153 // parent process that the health thread has started.
21542154 std::unique_ptr<IPCMessage> ipc_message = IPCMessage::Create (
@@ -2180,7 +2180,6 @@ main(int argc, char** argv)
21802180
21812181 // Destroy stub and exit.
21822182 logger.reset ();
2183- stub.reset ();
21842183 exit (1 );
21852184 }
21862185 }
0 commit comments