diff --git a/tf_adapter/util/npu_attrs.cc b/tf_adapter/util/npu_attrs.cc index cc0081830169aa879bee599d8f360a7fcf07cf25..ca54a7d15629f20214bef097ce53e124c8e79257 100644 --- a/tf_adapter/util/npu_attrs.cc +++ b/tf_adapter/util/npu_attrs.cc @@ -643,7 +643,7 @@ std::map NpuAttrs::GetSessOptions(const OpKernelConstr } sess_options["ge.inputBatchCpy"] = input_batch_cpy; sess_options["input_batch_cpy"] = input_batch_cpy; - + SetForbiddenClosePassOn(sess_options); return sess_options; } @@ -825,6 +825,7 @@ std::map NpuAttrs::GetInitOptions(const OpKernelConstr } init_options_["input_batch_cpy"] = input_batch_cpy; init_options_["ge.inputBatchCpy"] = input_batch_cpy; + SetForbiddenClosePassOn(init_options_); return init_options_; } @@ -2736,4 +2737,9 @@ void NpuAttrs::LogOptions(const std::map &options) { ADP_LOG(INFO) << option.first << ": " << option.second; } } + +// tf场景存在某些不可关闭pass,因此需要默认设置forbidden_close_pass为on,即开启这些不可关闭的pass +void NpuAttrs::SetForbiddenClosePassOn(std::map &option) { + option["ge.optimizationSwitch"].append("forbidden_close_pass:on"); +} } // namespace tensorflow diff --git a/tf_adapter/util/npu_attrs.h b/tf_adapter/util/npu_attrs.h index b81cced0e255b561c810c7e552ecebfcce976520..0506cf804cee21c2e1f115a8e0ddf5c2e0d83dfd 100644 --- a/tf_adapter/util/npu_attrs.h +++ b/tf_adapter/util/npu_attrs.h @@ -65,6 +65,7 @@ class NpuAttrs { static void SetUseAdpStatus(const std::string &iterator_name, bool is_use_adp); static bool IsDatasetExecuteInDevice(const std::string &iterator_name); static void SetDatasetExecuteInDeviceStatus(const std::string &iterator_name, bool is_dataset_execute_device); + static void SetForbiddenClosePassOn(std::map &option); static bool GetNewDataTransferFlag(); // only use for ut/st and host_queue_dataset set session_device_id static void SetNewDataTransferFlag(bool flag); diff --git a/tf_adapter_2.x/npu_device/core/npu_wrapper.cpp b/tf_adapter_2.x/npu_device/core/npu_wrapper.cpp index f22c6db0480769b2292be9f911af9fe002949801..14536b87fd4a8fa88ec54784dbf2704803700835 100644 --- a/tf_adapter_2.x/npu_device/core/npu_wrapper.cpp +++ b/tf_adapter_2.x/npu_device/core/npu_wrapper.cpp @@ -183,6 +183,10 @@ bool CheckIsDistribute(std::map &global_options) { global_options.find(ge::OPTION_EXEC_CM_CHIEF_DEVICE) != global_options.end())); } +void SetForbiddenClosePassOn(std::map &option) { + option["ge.optimizationSwitch"].append("forbidden_close_pass:on"); +} + void ParserGeOptions(const std::map &user_options, const std::map &config_options, std::map &ge_option) { @@ -213,6 +217,7 @@ void ParserSessionOptions(const std::map &user_options LOG(INFO) << " " << option.first << ":" << option.second; (void)session_option.emplace(option.first, option.second); } + SetForbiddenClosePassOn(session_option); } void ParseGlobalOptions(int device_index, const std::map &user_options, @@ -241,6 +246,7 @@ void ParseGlobalOptions(int device_index, const std::map