From d2aeda2a63b48e70bbd4b67f7299a13a337e6a9e Mon Sep 17 00:00:00 2001 From: lianghuikang <505519763@qq.com> Date: Tue, 12 Oct 2021 10:26:00 +0800 Subject: [PATCH] ts --- tf_adapter/kernels/geop_npu.cc | 90 ++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 43 deletions(-) diff --git a/tf_adapter/kernels/geop_npu.cc b/tf_adapter/kernels/geop_npu.cc index f8f3bc3d6..08128cb69 100644 --- a/tf_adapter/kernels/geop_npu.cc +++ b/tf_adapter/kernels/geop_npu.cc @@ -347,27 +347,27 @@ void GeOp::Finalize() { int GeOp::InitRebuildFlag(uint32_t cache_graph_id) { if (!build_flag_) { - ADP_LOG(INFO) << "[GEOP] tf session " << tf_session_ << ", graph id: " << cache_graph_id + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] tf session " << tf_session_ << ", graph id: " << cache_graph_id << " does not build yet, no need to check rebuild"; return 0; } if (ge_session_ == nullptr) { - ADP_LOG(ERROR) << "[GEOP] GE session is nullptr"; + ADP_LOG(ERROR) << "thread: " << std::this_thread::get_id() << "[GEOP] GE session is nullptr"; LOG(ERROR) << "[GEOP] GE session is nullptr"; return -1; } if (!ge_session_->IsGraphNeedRebuild(cache_graph_id)) { - ADP_LOG(INFO) << "[GEOP] tf session " << tf_session_ << ", graph id: " << cache_graph_id << " no need to rebuild"; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] tf session " << tf_session_ << ", graph id: " << cache_graph_id << " no need to rebuild"; return 0; } - ADP_LOG(INFO) << "[GEOP] The graph need rebuild, graph id " << cache_graph_id; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] The graph need rebuild, graph id " << cache_graph_id; // The graph need to rebuild, remove it from GE first. - ADP_LOG(INFO) << "[GEOP] tf session: " << tf_session_ << ", graph id: " << cache_graph_id; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] tf session: " << tf_session_ << ", graph id: " << cache_graph_id; auto ret = ge_session_->RemoveGraph(cache_graph_id); if (ret != ge::SUCCESS) { - ADP_LOG(ERROR) << "[GEOP] Failed to remove graph " << cache_graph_id << " from ge, error code " << ret; + ADP_LOG(ERROR) << "thread: " << std::this_thread::get_id() << "[GEOP] Failed to remove graph " << cache_graph_id << " from ge, error code " << ret; std::string error_message = ge::GEGetErrorMsg(); LOG(ERROR) << "[GEOP] Failed to remove graph " << cache_graph_id << " from ge, error code " << ret << std::endl << "Error Message is : " << std::endl @@ -437,16 +437,17 @@ void GeOp::GetExecGraphId(OpKernelContext *ctx, uint32_t &cache_graph_id, } cache_graph_id = cache_graphs_[input_shapes]; build_flag_ = true; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] cache_graph_id: " << cache_graph_id; } else { if (num >= kMaxCacheNum) { - ADP_LOG(INFO) << "[GEOP] the cache vector size is : " << num << " , begin erase the least uesed"; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] the cache vector size is : " << num << " , begin erase the least uesed"; std::sort(graph_counts_.begin(), graph_counts_.end(), CmpValue); uint32_t erased_graph_id = cache_graphs_[graph_counts_[0].first]; cache_graphs_.erase(graph_counts_[0].first); graph_counts_.erase(graph_counts_.begin()); ge::Status status = ge_session_->RemoveGraph(erased_graph_id); if (status != ge::SUCCESS) { - ADP_LOG(WARNING) << "[GEOP] GE Remove Graph failed, ret : " << ToString(status); + ADP_LOG(WARNING) << "thread: " << std::this_thread::get_id() << "[GEOP] GE Remove Graph failed, ret : " << ToString(status); LOG(WARNING) << "[GEOP] GE Remove Graph failed, ret : " << ToString(status); } cache_graph_id = erased_graph_id; @@ -460,19 +461,21 @@ void GeOp::GetExecGraphId(OpKernelContext *ctx, uint32_t &cache_graph_id, void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { // ctx is not nullptr + ADP_LOG(INFO) << "first log"; OP_REQUIRES_ASYNC(ctx, init_flag_, errors::InvalidArgument("GeOp not Initialize success."), done); // ge ge session { mutex_lock lock{mu_}; + ADP_LOG(INFO) << "mutex in"; if (!sess_init_flag_) { if (job_type_ != "localhost") { // in ps mode : ctx->session_handle() is empty tf_session_ = "ps_worker_session"; - ADP_LOG(INFO) << "[GEOP] get tf session " << tf_session_ << " when in ps mode."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] get tf session " << tf_session_ << " when in ps mode."; } if (tf_session_.empty()) { tf_session_ = ctx->session_handle(); - ADP_LOG(INFO) << "[GEOP] get tf session " << tf_session_ << " from session handle."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] get tf session " << tf_session_ << " from session handle."; } bool res = IncrementGraphIdCount(tf_session_, graph_id_); @@ -481,7 +484,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { return; } - ADP_LOG(INFO) << "[GEOP] Node name: " << ctx->op_kernel().name() << " , tf session: " << tf_session_; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] Node name: " << ctx->op_kernel().name() << " , tf session: " << tf_session_; res = SessionManager::GetInstance().GetOrCreateGeSession(tf_session_, ge_session_, sess_options_); if (!res || tf_session_.empty() || ge_session_ == nullptr) { @@ -491,7 +494,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { if (!init_options_["ge.jobType"].empty() && !init_options_["ge.tuningPath"].empty()) { uint32_t device_id = 0; OP_REQUIRES_OK_ASYNC(ctx, GetEnvDeviceID(device_id), done); - ADP_LOG(INFO) << "[GEOP] in tuning func, aoe_mode:" << init_options_["ge.jobType"] + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] in tuning func, aoe_mode:" << init_options_["ge.jobType"] << ", work_path:" << init_options_["ge.tuningPath"] << ", distribute_config:" << init_options_["distribute_config"]; tune_options_.insert(init_options_.begin(), init_options_.end()); @@ -502,13 +505,14 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { AoeStatus tune_ret = (*aoe_init_)(ge_session_, tune_options_); OP_REQUIRES_ASYNC(ctx, tune_ret == AOE_SUCCESS, errors::Internal("[GEOP] exec aoe init func failed."), done); } - ADP_LOG(INFO) << "[GEOP] tf session: " << tf_session_ << " get ge session success."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] tf session: " << tf_session_ << " get ge session success."; sess_init_flag_ = true; } + ADP_LOG(INFO) << "mutex out"; } string geop_name = ctx->op_kernel().name(); uint32_t num_inputs = static_cast(ctx->num_inputs()); - ADP_LOG(INFO) << "[GEOP] Begin GeOp::ComputeAsync" + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] Begin GeOp::ComputeAsync" << ", kernel_name:" << geop_name << ", num_inputs:" << num_inputs << ", num_outputs:" << ctx->num_outputs(); int64 startTime = InferShapeUtil::GetCurrentTimestap(); std::vector input_vec; @@ -522,7 +526,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { bool is_tuning = !init_options_["ge.jobType"].empty() && !init_options_["ge.tuningPath"].empty(); bool is_lazy_recompile_mode = dynamic_input_ == "1" && dynamic_graph_execute_mode_ == "lazy_recompile"; if (is_set_dynamic_config && is_tuning) { - ADP_LOG(FATAL) << "dynamic input config can not use with mstuning."; + ADP_LOG(FATAL) << "thread: " << std::this_thread::get_id() << "dynamic input config can not use with mstuning."; std::stringstream ss; ss << "dynamic input config can not use with mstuning."; OP_REQUIRES_ASYNC(ctx, false, errors::Internal(ss.str()), done); @@ -533,7 +537,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { return; } } else if (!is_set_dynamic_config && is_tuning) { - ADP_LOG(INFO) << "[GEOP] in tune func, do not rebuild graph."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] in tune func, do not rebuild graph."; } else { // in dynamic input mode, cache graphs. if (is_lazy_recompile_mode) { @@ -572,9 +576,9 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { Status status_out = WriteTextProto(Env::Default(), tmodel_path, ori_graph_def); } int64 endTime = InferShapeUtil::GetCurrentTimestap(); - ADP_LOG(EVENT) << "[GEOP] In GEOP computeAsync, kernel_name:" << geop_name << " ,TFadapter cost time: [" + ADP_LOG(EVENT) << "thread: " << std::this_thread::get_id() << "[GEOP] In GEOP computeAsync, kernel_name:" << geop_name << " ,TFadapter cost time: [" << ((endTime - startTime) / kMicrosToMillis) << " ms]"; - ADP_LOG(INFO) << "[GEOP] TFadpter process graph success, GE parser begin, kernel_name:" << geop_name + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] TFadpter process graph success, GE parser begin, kernel_name:" << geop_name << " ,tf session: " << tf_session_ << " ,graph id :" << cache_graph_id; // parser, tensorflow graph to ge graph std::shared_ptr model_parser = @@ -589,10 +593,10 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { auto build_sub_graph = [this, flib_def](const std::string &graph) -> std::string { // const tensorflow::GraphDef *graph_def_in = reinterpret_cast(root_proto); - ADP_LOG(INFO) << "[GEOP] build_sub_graph enter, sub graph name is " << graph; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] build_sub_graph enter, sub graph name is " << graph; const FunctionDef *func_def = flib_def->Find(graph); if (func_def == nullptr) { - ADP_LOG(ERROR) << "[GEOP] Sub graph not found in library, sub graph name is " << graph; + ADP_LOG(ERROR) << "thread: " << std::this_thread::get_id() << "[GEOP] Sub graph not found in library, sub graph name is " << graph; LOG(ERROR) << "[GEOP] Sub graph not found in library, sub graph name is " << graph; return ""; } @@ -600,11 +604,11 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { Graph subgraph(flib_def); Status status = InferShapeUtil::GetSubGraphFromFunctionDef(*flib_def, *func_def, &subgraph); if (status != Status::OK()) { - ADP_LOG(ERROR) << "[GEOP] Get subgraph from functiondef fail:" << status.error_message(); + ADP_LOG(ERROR) << "thread: " << std::this_thread::get_id() << "[GEOP] Get subgraph from functiondef fail:" << status.error_message(); LOG(ERROR) << "[GEOP] Get subgraph from functiondef fail:" << status.error_message(); return ""; } - ADP_LOG(INFO) << "[GEOP] Get subgraph from functiondef success."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] Get subgraph from functiondef success."; char *enable_force_v2_control = getenv("ENABLE_FORCE_V2_CONTROL"); if (enable_force_v2_control != nullptr && strcmp("1", enable_force_v2_control) == 0) { GraphDef graph_def; @@ -618,7 +622,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { // Add Input&Output Desc into NodeDef if (GenerateDesc(node) != Status::OK()) { - ADP_LOG(WARNING) << "[GEOP] name: " << node->name() << " op:" << node->type_string() + ADP_LOG(WARNING) << "thread: " << std::this_thread::get_id() << "[GEOP] name: " << node->name() << " op:" << node->type_string() << " Generate desc failed in subgraph."; LOG(WARNING) << "[GEOP] name: " << node->name() << " op:" << node->type_string() << " Generate desc failed in subgraph."; @@ -627,7 +631,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { unique_ptr sub_graph_def(new (std::nothrow) GraphDef()); if (sub_graph_def == nullptr) { - ADP_LOG(ERROR) << "[GEOP] Malloc memory for subgraph def fail."; + ADP_LOG(ERROR) << "thread: " << std::this_thread::get_id() << "[GEOP] Malloc memory for subgraph def fail."; LOG(ERROR) << "[GEOP] Malloc memory for subgraph def fail."; return ""; } @@ -643,7 +647,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { string tmodel_path = tmpmodel_path + graph.c_str() + ".pbtxt"; Status status_out = WriteTextProto(Env::Default(), tmodel_path, *sub_graph_def); } - ADP_LOG(INFO) << "[GEOP] build_sub_graph exit, sub graph name is " << graph; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] build_sub_graph exit, sub graph name is " << graph; return sub_graph_def->SerializeAsString(); }; @@ -660,7 +664,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { domi::GetContext().format = ge::GetParserContext().format; - ADP_LOG(INFO) << "[GEOP] Tensorflow graph parse to ge graph success, kernel_name:" << geop_name + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] Tensorflow graph parse to ge graph success, kernel_name:" << geop_name << " ,tf session: " << tf_session_ << " ,graph id: " << cache_graph_id; size_t nodes = compute_graph->GetAllNodesSize(); @@ -668,7 +672,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { build_flag_ = true; compute_graph_empty_ = true; int64 endTime = InferShapeUtil::GetCurrentTimestap(); - ADP_LOG(INFO) << "[GEOP] End GeOp::ComputeAsync, compute_graph is empty, kernel_name:" << geop_name + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] End GeOp::ComputeAsync, compute_graph is empty, kernel_name:" << geop_name << ", ret_status:" << ToString(ge::SUCCESS) << " , tf session: " << tf_session_ << " ,graph id: " << cache_graph_id << " [" << ((endTime - startTime) / kMicrosToMillis) << " ms]"; done(); @@ -682,7 +686,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { } if (is_host_graph_) { - ADP_LOG(INFO) << "[GEOP] set graph option."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] set graph option."; graph_options_["ge.exec.placement"] = "HOST"; } graph_options_["ge.shape_generalized_build_mode"] = "shape_precise"; @@ -696,7 +700,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { } if (is_tuning) { if (is_train_graph_ != "1" && init_options_["ge.jobType"] != "2" && init_options_["ge.jobType"] != "1") { - ADP_LOG(INFO) << "[GEOP] in tune mode, nontraining graphs should be cache."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] in tune mode, nontraining graphs should be cache."; OP_REQUIRES_ASYNC(ctx, SessionManager::GetInstance().CacheGeGraphs(ge_session_, ge_graph), errors::Internal("[GEOP] cache ge session failed."), done); build_flag_ = true; @@ -704,14 +708,14 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { done(); return; } else { - ADP_LOG(INFO) << "[GEOP] in tune mode, training graph handled by tools."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] in tune mode, training graph handled by tools."; std::vector ge_graphs; OP_REQUIRES_ASYNC(ctx, SessionManager::GetInstance().GetGeGraphs(ge_session_, ge_graphs), errors::Internal("[GEOP] ge ge session nontraining graphs failed."), done); tune_options_.insert(graph_options_.begin(), graph_options_.end()); AoeStatus tune_ret = (*aoe_tuning_)(ge_graph, ge_graphs, ge_session_, tune_options_); OP_REQUIRES_ASYNC(ctx, tune_ret == AOE_SUCCESS, errors::Internal("[GEOP] exec aoe tuning func failed."), done); - ADP_LOG(INFO) << "[GEOP] aoe success."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] aoe success."; build_flag_ = true; BuildOutTensorInfo(ctx); done(); @@ -723,7 +727,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { status = ge_session_->AddGraph(cache_graph_id, ge_graph, graph_options_); if (status != ge::SUCCESS) { std::this_thread::sleep_for(std::chrono::milliseconds(kFatalSleepTime)); - ADP_LOG(FATAL) << "[GEOP] call ge session add graph failed, kernel: " << geop_name << " ,tf session: " + ADP_LOG(FATAL) << "thread: " << std::this_thread::get_id()<< "[GEOP] call ge session add graph failed, kernel: " << geop_name << " ,tf session: " << tf_session_ << ", graph id: " << cache_graph_id; std::string error_message = ge::GEGetErrorMsg(); @@ -736,7 +740,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { OP_REQUIRES_ASYNC(ctx, status == ge::SUCCESS, errors::Unavailable(ss.str()), done); } else { add_graph_flag_ = true; - ADP_LOG(INFO) << "[GEOP] Add graph to ge session success, kernel_name:" << geop_name + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] Add graph to ge session success, kernel_name:" << geop_name << " ,tf session: " << tf_session_ << " ,graph id:" << cache_graph_id; } build_flag_ = true; @@ -755,7 +759,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { OP_REQUIRES_ASYNC(ctx, status == ge::SUCCESS, errors::Unavailable(ss.str()), done); } - ADP_LOG(INFO) << "[GEOP] Build graph success."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] Build graph success."; done(); return; } @@ -763,7 +767,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { } else { if (compute_graph_empty_) { int64 endTime = InferShapeUtil::GetCurrentTimestap(); - ADP_LOG(INFO) << "[GEOP] End GeOp::ComputeAsync, compute_graph is empty, kernel_name:" << geop_name + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] End GeOp::ComputeAsync, compute_graph is empty, kernel_name:" << geop_name << ", ret_status:" << ToString(ge::SUCCESS) << " , tf session: " << tf_session_ << " ,graph id: " << cache_graph_id << " [" << ((endTime - startTime) / kMicrosToMillis) << " ms]"; done(); @@ -772,7 +776,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { } if (is_tuning) { - ADP_LOG(INFO) << "in mstune mode, graph only execute once, The remaining steps return directly."; + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "in mstune mode, graph only execute once, The remaining steps return directly."; BuildOutTensorInfo(ctx); done(); return; @@ -782,7 +786,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { auto callback = [done, ctx, run_start_time](ge::Status ge_status, std::vector &outputs) { if (ge_status == ge::SUCCESS) { if (BuildOutputTensorInfo(ctx, outputs) != Status::OK()) { - ADP_LOG(FATAL) << ctx->op_kernel().name() << " GEOP::DoRunAsync get output failed."; + ADP_LOG(FATAL) << "thread: " << std::this_thread::get_id() << ctx->op_kernel().name() << " GEOP::DoRunAsync get output failed."; std::string error_message = ge::GEGetErrorMsg(); std::stringstream ss; ss << ctx->op_kernel().name() @@ -794,11 +798,11 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { } } else if (ge_status == ge::END_OF_SEQUENCE) { ctx->SetStatus(errors::OutOfRange("End of sequence")); - ADP_LOG(WARNING) << "[GEOP] Out of range: End of sequence."; + ADP_LOG(WARNING) << "thread: " << std::this_thread::get_id() << "[GEOP] Out of range: End of sequence."; LOG(WARNING) << "[GEOP] Out of range: End of sequence."; } else if (ge_status != ge::SUCCESS) { std::this_thread::sleep_for(std::chrono::milliseconds(kFatalSleepTime)); - ADP_LOG(FATAL) << ctx->op_kernel().name() << "GEOP::::DoRunAsync Failed"; + ADP_LOG(FATAL) << "thread: " << std::this_thread::get_id() << ctx->op_kernel().name() << "GEOP::::DoRunAsync Failed"; std::string error_message = ge::GEGetErrorMsg(); std::stringstream ss; ss << ctx->op_kernel().name() << "GEOP::::DoRunAsync Failed" << std::endl @@ -807,18 +811,18 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { return; } int64 run_end_time = InferShapeUtil::GetCurrentTimestap(); - ADP_LOG(INFO) << "[GEOP] RunGraphAsync callback, status:" << ge_status << ", kernel_name:" + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] RunGraphAsync callback, status:" << ge_status << ", kernel_name:" << ctx->op_kernel().name() << "[ " << (run_end_time - run_start_time) << "us]"; done(); }; - ADP_LOG(INFO) << "[GEOP] Call ge session RunGraphAsync, kernel_name:" << geop_name << " ,tf session: " << tf_session_ + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] Call ge session RunGraphAsync, kernel_name:" << geop_name << " ,tf session: " << tf_session_ << " ,graph id: " << cache_graph_id; // call ge session runGraphAsync api ge::Status status = ge_session_->RunGraphAsync(cache_graph_id, inputs, callback); if (status != ge::SUCCESS) { std::this_thread::sleep_for(std::chrono::milliseconds(kFatalSleepTime)); - ADP_LOG(FATAL) << "[GEOP] call ge session RunGraphAsync Failed, kernel:" << geop_name << " ,tf session: " + ADP_LOG(FATAL) << "thread: " << std::this_thread::get_id() << "[GEOP] call ge session RunGraphAsync Failed, kernel:" << geop_name << " ,tf session: " << tf_session_ << " ,graph id: " << cache_graph_id; std::string error_message = ge::GEGetErrorMsg(); std::stringstream ss; @@ -831,7 +835,7 @@ void GeOp::ComputeAsync(OpKernelContext *ctx, DoneCallback done) { } int64 endTime = InferShapeUtil::GetCurrentTimestap(); - ADP_LOG(INFO) << "[GEOP] End GeOp::ComputeAsync, kernel_name:" << geop_name << ", ret_status:" << ToString(status) + ADP_LOG(INFO) << "thread: " << std::this_thread::get_id() << "[GEOP] End GeOp::ComputeAsync, kernel_name:" << geop_name << ", ret_status:" << ToString(status) << " ,tf session: " << tf_session_ << " ,graph id: " << cache_graph_id << " [" << ((endTime - startTime) / kMicrosToMillis) << " ms]"; return; -- Gitee