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();