diff --git a/oneflow/core/job/runtime.cpp b/oneflow/core/job/runtime.cpp index ebf4512c0071e154e1d2f4a1bcb6a658b7b78443..49df84f26f42df79e92ccd3a5b8eda271f381a83 100644 --- a/oneflow/core/job/runtime.cpp +++ b/oneflow/core/job/runtime.cpp @@ -128,7 +128,8 @@ void Runtime::NewAllGlobal(const Plan& plan, size_t total_piece_num, bool is_exp Global<MemoryAllocator>::New(); Global<RegstMgr>::New(plan); Global<ActorMsgBus>::New(); - Global<ThreadMgr>::New(plan); + Global<ThreadMgr>::New(); + Global<ThreadMgr>::Get()->AddPlan(plan); Global<boxing::collective::CollectiveBoxingDeviceCtxPoller>::New(); Global<RuntimeJobDescs>::New(plan.job_confs().job_id2job_conf()); Global<summary::EventsWriter>::New(); diff --git a/oneflow/core/thread/thread_manager.cpp b/oneflow/core/thread/thread_manager.cpp index 62016ec753f15bf79fa0f2af1b840e997852aacd..e09db774378ff5b8f171bffda21d359d0691597f 100644 --- a/oneflow/core/thread/thread_manager.cpp +++ b/oneflow/core/thread/thread_manager.cpp @@ -42,7 +42,7 @@ Thread* ThreadMgr::GetThrd(int64_t thrd_id) { return iter->second.get(); } -ThreadMgr::ThreadMgr(const Plan& plan) { +void ThreadMgr::AddPlan(const Plan& plan) { const int64_t this_rank = GlobalProcessCtx::Rank(); for (const TaskProto& task : plan.task()) { TaskId task_id = DeserializeTaskIdFromInt64(task.task_id()); diff --git a/oneflow/core/thread/thread_manager.h b/oneflow/core/thread/thread_manager.h index 86964a78f7bd8eaeb5e8420b97be145f64c7461c..36824ed8db393b39252ce2d5d4de9c6e63a7205f 100644 --- a/oneflow/core/thread/thread_manager.h +++ b/oneflow/core/thread/thread_manager.h @@ -29,14 +29,14 @@ class Plan; class ThreadMgr final { public: OF_DISALLOW_COPY_AND_MOVE(ThreadMgr); - ThreadMgr() = delete; + ThreadMgr() = default; ~ThreadMgr(); + void AddPlan(const Plan& plan); Thread* GetThrd(int64_t thrd_id); private: friend class Global<ThreadMgr>; - explicit ThreadMgr(const Plan& plan); HashMap<int64_t, std::unique_ptr<Thread>> threads_; };