From dfce41e027c661a8c31243bf12f62136cd0e4ba0 Mon Sep 17 00:00:00 2001 From: zhousiyi Date: Tue, 6 Jul 2021 06:43:25 +0000 Subject: [PATCH] workaround for bprop func graph specialization but fprop func graph is not specialized yet. --- .../jit/static_analysis/program_specialize.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mindspore/ccsrc/pipeline/jit/static_analysis/program_specialize.cc b/mindspore/ccsrc/pipeline/jit/static_analysis/program_specialize.cc index 9c73dbe4110..2536a002e01 100644 --- a/mindspore/ccsrc/pipeline/jit/static_analysis/program_specialize.cc +++ b/mindspore/ccsrc/pipeline/jit/static_analysis/program_specialize.cc @@ -573,6 +573,21 @@ std::pair FuncGraphSpecializer::BuildFromB real->SetValue(joined_argvals, joined_eval_result); evalcaches_[eval] = real; return std::make_pair(joined_argvals, joined_eval_result->abstract()); + } else { + bool all_args_tensor = std::all_of(broaded_argvals.cbegin(), broaded_argvals.cend(), + [](const AbstractBasePtr &v) { return v->isa(); }); + if (all_args_tensor) { + ConfigPtrList args_conf_list; + (void)std::transform(broaded_argvals.cbegin(), broaded_argvals.cend(), std ::back_inserter(args_conf_list), + [](const AbstractBasePtr &v) -> ConfigPtr { return std::make_shared(v); }); + MS_LOG(WARNING) << "Cannot find joined argvals in cache, run with broaded argsvals: " << broaded_argvals.size() + << ", " << ::mindspore::ToString(broaded_argvals); + ret = eval->SingleRun(engine_, args_conf_list, nullptr); + MS_EXCEPTION_IF_NULL(ret); + real->SetValue(broaded_argvals, ret); + evalcaches_[eval] = real; + return std::make_pair(broaded_argvals, ret->abstract()); + } } } MS_LOG(DEBUG) << "Choices.size: " << choices.size();